IEnumerator DoorAnimation() { // Freezes player movement player.FreezePlayer(); // Instantiates the NextRoom RoomGenerator newRoomGenerator = FindObjectOfType <DungeonDisplay>() .InstantiateRoom(door.GetNextRoom(currentRoom.GetCurrentRoom())); // Disables Door Animations For the new Room newRoomGenerator.EnableDoorAnimations(false); // Changes the player animation to walk in appropreate direction. if (direction == Cardinal4.Direction.NORTH) { playerAnimator.SetFloat("deltaX", 0); playerAnimator.SetFloat("deltaY", 1); } else if (direction == Cardinal4.Direction.SOUTH) { playerAnimator.SetFloat("deltaX", 0); playerAnimator.SetFloat("deltaY", -1); } //Move player into the door Coroutine a = StartCoroutine(player.MovePlayerToPoint( (Vector2)this.transform.position, player.GetSpeed())); yield return(a); //Update the current room Room nextRoom = door.GetNextRoom(currentRoom.GetCurrentRoom()); currentRoom.SetCurrentRoom(nextRoom); //Moves camera to new room Coroutine b = StartCoroutine(mainCamera.MoveCameraToNewRoom( currentRoom.GetCurrentRoom(), cameraMovementTime)); yield return(b); // Move player out of the door into the room Coroutine c = StartCoroutine(player.MovePlayerToPoint( (Vector2)this.transform.position + Cardinal4.DirectionToVector2(direction, distanceFromDoor), player.GetSpeed())); yield return(c); // Enable Door Animations for the Next Room newRoomGenerator.EnableDoorAnimations(true); // Allow for Player Movement player.UnfreezePlayer(); // Destroy current RoomGenerator Destroy(currentRoomGenerator.gameObject); }
private IEnumerator EnterDungeonAnimation() { // Create a dummy room and door. Room startRoom = dungeon.startRoom; Vector2 coordinateForDummyRoom = startRoom.roomCoordinate.GetVector2() + new Vector2(0, -1); Room dummyRoom = new Room(new RoomCoordinate(coordinateForDummyRoom)); Door dummyDoor = new Door(dummyRoom, startRoom, Door.DoorState.open); // Player stuff & setting up the cutrains player.FreezePlayer(); player.UnfreezeAnimation(); player.GetComponent <Animator>().SetFloat("deltaY", 1); player.GetComponent <Animator>().speed = 1; curtains.SetCurtainsClosed(); // Begin animation Coroutine a = StartCoroutine(curtains.OpenCurtains()); yield return(a); Destroy(curtains.gameObject); player.transform.position = dungeon.startRoom.roomCoordinate.GetRoomWorldPosition() - new Vector2(0, -5); Vector2 movePlayerHere = dungeon.startRoom.roomCoordinate.GetRoomWorldPosition() + new Vector2(0, -2.5f); Coroutine b = StartCoroutine(player.MovePlayerToPoint(movePlayerHere, player.speed)); yield return(b); dummyDoor.ChangeState(Door.DoorState.closed); player.UnfreezePlayer(); currentRoomGenerator.EnableDoorAnimations(true); currentRoomGenerator.EnableStairAnimations(true); }
public virtual void CreateDungeon(Dungeon dungeon) { this.dungeon = dungeon; currentRoomGenerator = InstantiateRoom(dungeon.startRoom); currentRoomGenerator.EnableDoorAnimations(false); player.GetComponent <CurrentRoom>().SetCurrentRoom(dungeon.startRoom); mainCamera.SetCameraToNewRoom(dungeon.startRoom); StartCoroutine(EnterDungeonAnimation()); }