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로 순간이동하는데 왜 그럼?