private void Awake() { if (Instance != null) { Destroy(gameObject); return; } else { Instance = this; } dashEnergyList = new List <float>(dashPointAmount); for (int i = 0; i < dashPointAmount; i++) { dashEnergyList.Add(0); } passedFloorQueue = new Queue <GameObject>(); timer = 0.0f; passingBridge = null; deferredJoyConRot = targetJoyConRot; State = MarathonPlayerStatus.WarmingUp; rd = GetComponent <Rigidbody>(); ani = GetComponent <Animator>(); dizzyEffectObj.SetActive(false); shouldCheckUnstable = false; shouldCountUnstableTimer = false; passBridgeBenchmarkQuat = Quaternion.identity; prevFullHoneyCount = 0; frameCount = 0; Debug.Assert(unstableRemedyTime < unstableHoldTime); }
//===================================================================================================== // Public functions //===================================================================================================== public void SetPlayerState(MarathonPlayerManager.MarathonPlayerStatus newState) { if (State == MarathonPlayerStatus.ReachGoal) { return; } if (negativeStatus.Contains(newState) && negativeStatus.Contains(State)) { return; } else { // Old state switch (State) { case MarathonPlayerStatus.Dashing: AudioManager.Instance.Stop("Dashing"); break; case MarathonPlayerStatus.Dizzying: dizzyEffectObj.SetActive(false); break; case MarathonPlayerStatus.PassingBridge: shouldCheckUnstable = false; ani.SetBool("isBridgeUnstable", false); break; case MarathonPlayerStatus.ReachGoal: break; } // New state switch (newState) { case MarathonPlayerStatus.Dashing: AudioManager.Instance.Play("Dashing"); break; case MarathonPlayerStatus.Dizzying: { AudioManager.Instance.Play("Dizzy"); rd.velocity = Vector3.zero; dizzyEffectObj.SetActive(true); var parSystem = dizzyEffectObj.GetComponent <ParticleSystem>(); if (!parSystem.isPlaying) { parSystem.Play(); } } break; case MarathonPlayerStatus.Falling: if (State == MarathonPlayerStatus.Falling) { return; } AudioManager.Instance.Play("Falling"); break; case MarathonPlayerStatus.PassingBridge: Invoke("StartCheckUnstable", checkUnstableAfterSec); break; } State = newState; timer = 0.0f; } }