using DG.Tweening;
using System.Collections;
using UnityEngine;
public class BossStateMachineBase : StateMachineBehaviour
{
protected BossMonster bossMonster;
protected Vector3 currentPosition;
protected Vector3 playerPosition;
protected Vector3 targetPosition;
protected float timer;
protected string animationName;
virtual public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
if(bossMonster == null)
{
bossMonster = animator.GetComponent<BossMonster>();
}
animationName = this.GetType().Name;
currentPosition = bossMonster.transform.position;
playerPosition = bossMonster.playerPos;
timer = 0f;
}
virtual public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
timer += Time.deltaTime;
}
virtual public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.SetBool(animationName, false);
}
}
StateMachineBehaviour을 이용해서 보스 상태들의 부모가 될 BossStateMachineBase를 만들었다.
스크립트의 이름과 상태의 파라미터를 동일하게 만들어 GetType.Name으로 상태를 변경할 수 있도록 했다.