보스 패턴 구현

Tom·2024년 7월 29일
0
post-custom-banner
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으로 상태를 변경할 수 있도록 했다.

profile
여기 글은 보통 틀린 경우가 많음
post-custom-banner

0개의 댓글