StartCoroutine이 말더듬을 일으키는 지 확실하지 않습니다. 그러나 스크립트를 Inspector에서 사용하지 않도록 설정하면 스크립트를 사용할 때 말더듬이 사라집니다.StartCoroutine을 사용할 때 플레이어가 망가져 있습니다. 어떻게 해결할 수 있습니까?
ThirdPersonController에 첨부 된 웨이 포인트 스크립트를 사용하고 있습니다. ThirdPersoncontroller에 Nav MesH Agent도 추가했습니다.
Naviagtion 창의 웨이 포인트로 두 개의 구체도 있습니다. 확인란을 선택하여 탐색을 정적으로 만들었고 평면에서도 Navigation Static을했습니다.
다음 구운.
애니메이터 창에서 휴머노이드 워크를 사용하여 새로운 상태 Walk를 만들었고 세트가 기본이므로 모든 플레이어가 게임을 실행할 때 자동으로 걷기 시작합니다.
플레이어가 웨이 포인트 사이를 걷고 있지만 모두 망가져 있습니다. 만약 내가 스크립트를 사용하고 있지 않다면 플레이어는 잘 걷고 있습니다. 다른 플레이어들도 스크립트를 사용할 때만 말더듬기가 잘됩니다.
이
은 중간 지점 스크립트입니다 :using UnityEngine;
using System.Collections;
public class Patrol : MonoBehaviour
{
public Transform[] patrolPoints;
private NavMeshAgent agent;
private int dest = 0;
// Use this for initialization
void Start()
{
agent = GetComponent<NavMeshAgent>();
StartCoroutine (Patrolling());
}
IEnumerator Patrolling()
{
bool startPatorl = false;
for (int i = 0; i < patrolPoints.Length; i++)
{
while (!startPatorl)
{
if (agent.remainingDistance < 2.5f)
{
i++;
dest = i;
}
if (i >= patrolPoints.Length)
{
i = 0;
dest = 0;
}
agent.destination = patrolPoints[dest].transform.position;
yield return null;
}
}
}
}
'startPatorl'이'Patrolling()'함수의 어느 곳에서도'true'로 설정되지 않기 때문에 프로그램이 무한 루프로 진행됩니다. while 루프는'startPatorl'이'false' 인 동안 실행됩니다. 어딘가에'startPatorl'을 설정해야합니다. 나는 당신이 무엇을하고 있는지를 모르기 때문에 이것을 어디서 할지를 말할 수는 없지만 그것이 문제입니다. – Programmer
@Programmer 내가하고있는 것은 플레이어를 중간 지점으로 이동시키는 것입니다. 스크립트가 잘못된 방식입니다 (전체 스크립트 로직의 startPatrol이 아님)? –
예. 그것을 보아서 그것은 틀립니다. 멈추지 않은 유일한 이유는 이것이 coroutine 함수이고 while 루프 안에'yield returns null; '이 있기 때문입니다. 그것 없이는 게임을 멈출 것입니다. 그 외에는, 나머지 코드를 이해하지 못합니다 ...'patrolPoints'에'waypoints'가 저장되어 있고 플레이어를'patrolPoints [0]'에서'patrolPoints'의 길이로 옮기고 싶습니까? – Programmer