-1
나는 플레이어가 로봇과 싸우는 게임을 만들고 있는데, 조건이 충족되면 AI가 뒤로 이동하고 플레이어에서 멀리 회전하도록 코드를 구현했다. 그러나 이것이 반복되는 공동 작업은 영원히 반복되며 어떻게 깨지는지 확신 할 수 없습니다.유니티 5 코 루틴이 종료 될 때까지 기다릴 필요가 없다
void Update()
{
//looking at player
playerVelocity = ((TTarget.position - previous).magnitude)/Time.deltaTime;
previous = TTarget.position;
GameObject thePlayer = GameObject.Find("Player");
PlayerMovement playerMovement = thePlayer.GetComponent<PlayerMovement>();
enemyHit = playerMovement.hitEnemy;
if (enemyHit == false)
{
//enemy moving
transform.LookAt(TTarget);
transform.Translate(Vector3.forward * Time.deltaTime * movementSpeed);
}
else if (enemyHit == true)
{
StartCoroutine("Evade");
//Debug.Log ("Hello");
StopCoroutine("Evade");
}
}
IEnumerator Evade()
{
//GameObject thePlayer = GameObject.Find("Player");
//PlayerMovement playerMovement = thePlayer.GetComponent<PlayerMovement>();
//enemyHit = playerMovement.hitEnemy;
transform.Translate(Vector3.back * Time.deltaTime * movementSpeed);
yield return new WaitForSeconds(1);
Vector3 to = new Vector3(0, -45, 0);
if (Vector3.Distance(transform.eulerAngles, to) > 0.01f)
{
transform.eulerAngles = Vector3.Lerp(transform.rotation.eulerAngles, to, 99*Time.deltaTime);
}
yield break;
}
와 것이 일을하고자했다'debug.log를 것 같아요()'사이의 콜 루틴 (cooutine) 사이에 주석을 제거하면 로그에 출력되는 것을 볼 수 있습니까? –
사용자가 제공 한 답변이 만족스럽게 질문에 대한 답변을 얻은 경우 옆에있는 체크 표시를 클릭하여 동의해야합니다. 이 질문과 이전 질문을 검토하여 답변을 받아 들일 수 있는지 확인하십시오. 감사! – Serlite