76 lines
1.6 KiB
C#
76 lines
1.6 KiB
C#
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<Transform>();
|
|
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);
|
|
}
|
|
}
|
|
}
|