using System.Collections; using System.Collections.Generic; using UnityEngine; public class MonsterController : MonoBehaviour { public enum State { IDLE, TRACE, ATTACK, DIE } public State monsterState; public float attackDist = 2.0f; public float traceDist = 10.0f; public bool isDie = false; public Transform playerTr, monsterTr; // Start is called before the first frame update void Start() { playerTr = GameObject.Find("Player").GetComponent(); monsterTr = transform; StartCoroutine(CheckMonsterState()); } IEnumerator CheckMonsterState() { while (!isDie) { // 거리 계산 float distance = Vector3.Distance(playerTr.position, monsterTr.position); if (distance <= attackDist) { monsterState = State.ATTACK; } else if (distance <= traceDist) { monsterState = State.TRACE; } else { monsterState = State.IDLE; } yield return new WaitForSeconds(0.3f); } } IEnumerator MonsterAction() { while (!isDie) { switch (monsterState) { case State.IDLE: break; case State.TRACE: break; case State.ATTACK: break; case State.DIE: break; } yield return new WaitForSeconds(0.3f); } } }