void Start()
{
ChangeState(STATE.CREAT);
}
void ChangeState(STATE s)
{
if (myState == s) return;
myState = s;
switch (myState)
{
case STATE.CREAT:
ChangeState(STATE.ROAMING);
break;
case STATE.ROAMING:
StartCoroutine(Roaming());
break;
}
}
IEnumerator Roaming()
{
Vector3 rndPos = new Vector3();
rndPos.x = Random.Range(-10.0f, 10.0f);
rndPos.z = Random.Range(-10.0f, 10.0f);
while (true)
{
Vector3 dir = (rndPos - transform.position).normalized;
transform.localRotation = Quaternion.Slerp(transform.localRotation, Quaternion.LookRotation(dir), 5 * Time.deltaTime);
transform.Translate(Vector3.forward * Speed * Time.deltaTime, Space.Self);
float Movedist = Vector3.Distance(transform.position,rndPos);
if (Movedist <= 0.1f)
{
yield return new WaitForSeconds(Random.Range(1.0f, 3.0f));
rndPos.x = Random.Range(-10.0f, 10.0f);
rndPos.z = Random.Range(-10.0f, 10.0f);
}
}
}
유한상태기계 이용해서 몬스터 로밍하는 코드 작성했는데 몬스터가 천천히 이동을 하는게 아니라 rndpos로 순간이동하는데 왜 그럼?
무한루프 코루틴에 yield return null 넣으셈
while(true) { // 대충 업데이트 코드 yield return null }
와 ㄳㄳ