// Update is called once per frame void Update() { if (dying) { float deathTime = 2.5f; dyingTimer += Time.deltaTime; if (dyingTimer >= deathTime) { LevelObjectManager.ReloadLevel(); // reset the level dying = false; dyingTimer = 0f; } return; // prevent player control when dying. } _ = TileMoveScript; // force update of component PlayerEnum updatingPlayer = PlayerName == "spongebob" ? PlayerEnum.SPONGEBOB : PlayerEnum.PATRICK; bool currentPlayer = (PlayerName == "spongebob" && CurrentPlayer == PlayerEnum.SPONGEBOB) || (PlayerName == "patrick" && CurrentPlayer == PlayerEnum.PATRICK); if (updatingPlayer == swappingPlayer && playerSwapping) // this frame is the update frame after swapping { playerSwapping = false; } if (currentPlayer) { Current = this; if (!IsMoving) { if (Input.GetKey(KeyCode.W)) // forward { WalkToTile(TileX, TileY - 1); rotator.Rotate(SRotation.NORTH); } else if (Input.GetKey(KeyCode.S)) // backward { WalkToTile(TileX, TileY + 1); rotator.Rotate(SRotation.SOUTH); } else if (Input.GetKey(KeyCode.A)) // left { WalkToTile(TileX - 1, TileY); rotator.Rotate(SRotation.WEST); } else if (Input.GetKey(KeyCode.D)) // right { WalkToTile(TileX + 1, TileY); rotator.Rotate(SRotation.EAST); } if (Input.GetKeyDown(KeyCode.Q)) { TileMoveScript.NoClip = !TileMoveScript.NoClip; // no clip toggle } if (Input.GetKeyDown(KeyCode.K)) { KillAllPlayers(); // kill me now } } if (Input.GetKeyDown(KeyCode.Space) && !playerSwapping) { swappingPlayer = CurrentPlayer; switch (CurrentPlayer) // switch current player { case PlayerEnum.SPONGEBOB: CurrentPlayer = PlayerEnum.PATRICK; // patrick break; case PlayerEnum.PATRICK: CurrentPlayer = PlayerEnum.SPONGEBOB; // spongebob break; } SoundLoader.Play("teleport.wav", false); playerSwapping = true; } } }
void FaceDirection(SRotation Direction) => Rotator.Rotate(Direction);