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; }
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(); } }