void FixedUpdate() { switch (state) { case State.Idle: transform.rotation = originalRotation; animator.SetFloat(Speed, 0.0f); footRun.SoundStop(); break; case State.RunningToEnemy: animator.SetFloat(Speed, runSpeed); if (RunTowards(target.position, distanceFromEnemy)) { switch (weapon) { case Weapon.Bat: state = State.BeginAttack; break; case Weapon.Fist: state = State.BeginPunch; break; } } break; case State.BeginAttack: animator.SetTrigger(MeleeAttack); state = State.Attack; playSound.Play("DamageHand"); footRun.SoundStop(); break; case State.Attack: break; case State.BeginShoot: animator.SetTrigger(Shoot); state = State.Shoot; break; case State.Shoot: playSound.Play("DamageShoot"); break; case State.BeginPunch: animator.SetTrigger(Punch); state = State.Punch; playSound.Play("DamageHand"); footRun.SoundStop(); break; case State.Punch: break; case State.RunningFromEnemy: animator.SetFloat(Speed, runSpeed); //footRun.SoundStart(); if (RunTowards(originalPosition, 0.0f)) { state = State.Idle; } break; case State.BeginDying: animator.SetTrigger(Death); if (playSound) { playSound.Play("Die"); } state = State.Dead; footRun.SoundStop(); break; case State.Dead: break; default: throw new ArgumentOutOfRangeException(); } }
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks //override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) //{ // //} // OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { footRun.SoundStop(); }