예제 #1
0
    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();
        }
    }
예제 #2
0
    // 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();
    }