private void Update()
 {
     //Play Walk Sound
     if (IsGrounded && Mathf.Abs(RelativeVelocity.x) > float.Epsilon)
     {
         if (walkSoundHandle == null)
         {
             walkSoundHandle = SoundManager.Instance.PlaySFX(SoundManager.Instance.WalkSound, 0.8f, true);
         }
     }
     else
     {
         if (walkSoundHandle != null)
         {
             walkSoundHandle.StopRightNow();
             walkSoundHandle = null;
         }
     }
 }
예제 #2
0
        private void Update()
        {
            if (GameManager.Instance.GameStateNow != GameState.Running)
            {
                return;
            }
            if (GameManager.Instance.PlayerGO == null || !PlayerController.Instance.pawnController.Alive)
            {
                return;
            }
            if (leavingCoolDoawn > 0f)
            {
                leavingCoolDoawn -= Time.unscaledDeltaTime;
            }

            if (AllowLeaving && TimeFreezeStarted && InputHandler.FreezeTime.KeyUp && leavingCoolDoawn <= 0f)
            {
                leavingCoolDoawn = 1f;
                LeaveFreeze();
                TheWorldEffectHelper.Instance.ExitEffect(0.5f);
                if (FreezeOutHandle != null)
                {
                    FreezeOutHandle.StopRightNow();
                }
                FreezeOutHandle = SoundManager.Instance.PlaySFXIgnoreTimeFreeze(SoundManager.Instance.FreezeOutSound, 0.4f);
                if (FreezeInHandle != null)
                {
                    SoundManager.Instance.CrossFade(FreezeOutHandle, FreezeInHandle, 0.5f);
                }
                SoundManager.Instance.SFXEnvironment = SoundEnvironmentEnum.Normal;
            }
            if (!TimeFreezeStarted && InputHandler.FreezeTime.KeyDown && leavingCoolDoawn <= 0f)
            {
                TheWorldEffectHelper.Instance.ZaWaLuDo(1f);
                waitForEffectFinish = 1f;
                EnterFreeze();
                SoundManager.Instance.ClearSFXForTimeFreeze();
                SoundManager.Instance.SFXEnvironment = SoundEnvironmentEnum.TimeFreezed;
                if (FreezeInHandle != null)
                {
                    FreezeInHandle.StopRightNow();
                }
                FreezeInHandle = SoundManager.Instance.PlaySFXIgnoreTimeFreeze(SoundManager.Instance.FreezeInSound, 0.4f);
                if (FreezeOutHandle != null)
                {
                    SoundManager.Instance.CrossFade(FreezeInHandle, FreezeOutHandle, 0.5f);
                }
            }
            if (TimeFreezeStarted)
            {
                remainChangeTime -= Time.unscaledDeltaTime;
                if (remainChangeTime <= 0f)
                {
                    remainChangeTime = ChangeSpeed;
                    bool changed = false;
                    if (waitForEffectFinish > 0)
                    {
                        waitForEffectFinish -= Time.unscaledDeltaTime;
                    }
                    else
                    {
                        if (InputHandler.TimeBackward.KeyHold)
                        {
                            ++TimeStampDiff;
                            changed = true;
                        }
                        else if (InputHandler.TimeAfterward.KeyHold)
                        {
                            --TimeStampDiff;
                            changed = true;
                        }
                    }
                    if (changed)
                    {
                        TimeStampDiff = Math.Max(TimeStampDiff, 0);
                        TimeStampDiff = Math.Min(TimeStampDiff, TimeStateManager.Instance.MaxRewindableTimeStamp);
                        TimeStateManager.Instance.Rewind(TimeStampDiff, true);
                        if (TimeStampDiff == 0 && PlayerGhostManager.Instance.CurrentGhost != null)
                        {
                            PlayerGhostManager.Instance.CurrentGhost.SetActive(false);
                        }
                    }
                }
            }

            if (TimeFreezeStarted && waitForEffectFinish <= 0f)
            {
                TimeUIGO.gameObject.SetActive(true);
                String timeStr = (TimeStateManager.RecordInterval * TimeStampDiff).ToString("F2") + " S";
                TimeUIGO.SetTimeValue(TimeStampDiff, 0, TimeStateManager.Instance.CurrentTimeStamp - TimeStateManager.Instance.EarliestExistingTimeState + 1, timeStr);
            }
            else
            {
                TimeUIGO.gameObject.SetActive(false);
            }
        }