Beispiel #1
0
        public void EnterDoor(PixelDoor door)
        {
            PixelRoom room         = door.destination;
            Transform originalroom = transform.parent;

            Vector2 originalposition = transform.position;

            transform.parent = null;             // Prevents disabling the player

            originalroom.gameObject.SetActive(false);
            room.transform.gameObject.SetActive(true);

            Vector2 destinationOffset = door.dropOffWorldLocation;

            facingDirection = destinationOffset - (Vector2)transform.position;
            if (!(door is PixelStair))
            {
                transform.position = destinationOffset;
            }

            transform.parent = room.transform;

            room.OnEnable();

            UpdateSortingLayer();

            CancelInvoke("Movement");
            AnimateMovement();
            InvokeRepeating("Movement", 0.0f, 1.0f / room.RoomWalkingSpeed);

            if (door is PixelStair)
            {
                transform.position = originalposition;
            }

            return;
        }
Beispiel #2
0
        public void InspectObject(PixelCollision pc)
        {
            // Inspected object is a door
            PixelDoor door = pc.pixelCollider.transform.parent.GetComponent <PixelDoor>();

            if (door != null)
            {
                if (door.interactionDirection != Direction.All && pc.direction != Direction.All)
                {
                    if (door.interactionDirection != pc.direction)
                    {
                        return;
                    }
                    if (facingDirection.x > 0 && facingDirection.y > 0 && door.interactionDirection != Direction.NE)
                    {
                        return;
                    }
                    if (facingDirection.x > 0 && facingDirection.y < 0 && door.interactionDirection != Direction.SE)
                    {
                        return;
                    }
                    if (facingDirection.x < 0 && facingDirection.y > 0 && door.interactionDirection != Direction.NW)
                    {
                        return;
                    }
                    if (facingDirection.x < 0 && facingDirection.y < 0 && door.interactionDirection != Direction.SW)
                    {
                        return;
                    }
                }
                animator.SetTrigger(Animator.StringToHash("IsInteract"));
                EnterDoor(door);
                return;
            }

            // Inspected object is an item
            PixelItem item = pc.pixelCollider.transform.parent.GetComponent <PixelItem>();

            if (item != null)
            {
                CharacterInventory inv = GetComponentInChildren <CharacterInventory>();
                Debug.Assert(inv != null);

                bool succeed = inv.AddItem(item);

                if (succeed)
                {
                    animator.SetTrigger(Animator.StringToHash("IsPickup"));
                    item.gameObject.SetActive(false);
                    item.transform.parent = inv.transform;
                }

                return;
            }

            // Inspected object is a character
            currentlySpeakingTo = pc.pixelCollider.transform.parent.GetComponent <Character>();
            if (currentlySpeakingTo == this)
            {
                currentlySpeakingTo = null;                                          // Cannot talk to one self
            }
            if (currentlySpeakingTo != null)
            {
                Talk();
            }
        }