AttackState

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AttackState : FSMState {

    public AttackState(Transform[] ts)
    {
        state = State.Attack;
        wayPonts = ts;
        moveSpeed = 120;
        turnSpeed = 12;
    }


    public override void Reason(Transform player, Transform aiObj)
    {
        float distance = Vector3.Distance(player.position, aiObj.position);
        if (distance > attackDistance&&distance<chaseDistance)
        {
            aiObj.GetComponent<FSMManager>().StateTransition(Transition.SeePlayer);
        }
        else if (distance > chaseDistance)
        {
            aiObj.GetComponent<FSMManager>().StateTransition(Transition.LostPlayer);
        }
    }

    public override void Action(Transform player, Transform aiObj)
    {
        target = player.position;

        Quaternion rotation = Quaternion.LookRotation(target - aiObj.position);
        aiObj.rotation = Quaternion.Slerp(aiObj.rotation, rotation, Time.deltaTime * turnSpeed);

        aiObj.GetComponent<FSMManager>().PlayAttackAnimtion();
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章