IEnumerator RaiseDoorway() { yield return new WaitForSeconds(doorAnimationDuration); player1.GetComponent<Player>().SetPlayerControl(true);//Start the players controlling. player2.GetComponent<Player>().SetPlayerControl(true); del -= MovingDoor; isDoorUp = true; float dir = firstApearsFrom1and2 ? 1f : -1f; cameraBound.localPosition = new Vector3(0f, 0f, (cameraBound.localScale.z / 2f + 5f) * dir ); cameraBound.gameObject.SetActive(true); }
IEnumerator Stop(float delay) { yield return new WaitForSeconds(delay); del -= TransitionRoom; hasPlayer1 = false; hasPlayer2 = false; player1Loc = 0; player2Loc = 0; del += MovingDoor; StartCoroutine(RaiseDoorway()); isActive = true; }
IEnumerator OpenDoor() { //play door sound //play door opening anim player1.GetComponent<Player>().SetPlayerControl(false);//stops the players controlling. player2.GetComponent<Player>().SetPlayerControl(false); player1.GetComponent<Player>().ZeroVelocity(); player2.GetComponent<Player>().ZeroVelocity(); del += MovingDoor; yield return new WaitForSeconds(doorAnimationDuration); del -= MovingDoor; isDoorUp = false; startTime = Time.time; startPOSPlayer1 = player1.transform.position; Vector3 zoneOffsetP1 = player1.transform.position - (transform.FindChild("WaitingZones").transform.FindChild((player1Loc).ToString()).position); startPOSPlayer2 = player2.transform.position; Vector3 zoneOffsetP2 = player2.transform.position - (transform.FindChild("WaitingZones").transform.FindChild((player2Loc).ToString()).position); if (player1Loc + 2 < 5) { endPOSPlayer1 = player1Loc == 1? (zone3.position + zoneOffsetP1): (zone4.position + zoneOffsetP1); endPOSPlayer2 = player2Loc == 1? (zone3.position + zoneOffsetP2): (zone4.position + zoneOffsetP2); } else if (player1Loc - 2 > 0) { endPOSPlayer1 = player1Loc == 3 ? (zone1.position + zoneOffsetP1) : (zone2.position + zoneOffsetP1); endPOSPlayer2 = player2Loc == 3 ? (zone1.position + zoneOffsetP2) : (zone2.position + zoneOffsetP2); } journeyLengthPlayer1 = Vector3.Distance(startPOSPlayer1, endPOSPlayer1); journeyLengthPlayer2 = Vector3.Distance(startPOSPlayer2, endPOSPlayer2); float transitiondelay = journeyLengthPlayer1 > journeyLengthPlayer2 ? journeyLengthPlayer1 : journeyLengthPlayer2; transitiondelay /= playerWalkSpeed; del += TransitionRoom; StartCoroutine(Stop(transitiondelay)); }