현재 Unity3D 게임에서 작업 중이며 Nav Mesh 에이전트에 문제가 있습니다. 나의 현재 목표는 적을 가장 가까운 플레이어쪽으로 걸어 가게하는 것입니다 (3이 될 것입니다). 하나는 내가 적을 스폰합니다. 플레이어 중 가장 가까운 플레이어를 확인합니다. 거리가 'float.MaxValue
'에서 시작되며, 플레이어가 현재 거리보다 가까운 때마다 ('로 설정됩니다이 조각에서Unity - NavMeshAgent가 여러 코너에서 작동하지 않습니다.
agent.CalculatePath(player.transform.position, path);
agent.Stop();
agent.SetPath(path);
if (distance > agent.remainingDistance)
{
distance = agent.remainingDistance;
playerToFollow = player;
}
아래의 코드에서 볼 수 있듯이 이것은 플레이어를 향해 남은 거리 이루어집니다 . 게임 오브젝트입니다 playerToFollow
',
문제는 여기에있다 :. 플레이어의 경로가 0 또는 1 모서리가있는 경우 경로가 더 포함 할 때마다 는 탐색 메쉬 에이전트는 ... 플레이어 향해 길을 걷기 시작하지만 것입니다. 1을 초과하면 거리가 계산되지 않으므로 agent.remainingDistance == float.PositiveInfinity
을 반환합니다.
이것은 거리 (float.MaxValue
)가 남은 거리 (float.PositiveInfity
)보다 작음을 의미합니다.
내가 잊을지도 모르는 것들? 저에게 알려주세요. 언제나 자세한 내용을 제공 할 수 있습니다.
'NavMeshAgent.remainingDistance'는 거리를 알 수 없을 때 무한대를 반환합니다. 에이전트와 플레이어가 항상 navmesh에 있다는 것을 확신합니까? – Serlite
예. 플레이어 컨트롤을 구현중인 팀원 중 일부가 아직 작업 중입니다. 플레이어로 태그 된 객체는 움직이지 않고 항상 그루브를 만듭니다. 적군은 비행기에 산란 할 수 있고 걸을 수 있고 뛸 수없는 적들은 같은 Y 위치에 있습니다. – Marcel
부수적으로,'remainingDistance'는 경로가 처음 할당 된 후 프레임이 업데이트 될 때까지 업데이트되지 않을 가능성이 있습니다 - 경로가 할당 된 후'Update()'메소드에서 검사를 시도하십시오 (이 검사가 현재 완료된 경우에만). 한 번), 가치가 더 유용한 것으로 바뀌는 지 확인하십시오. 그렇지 않으면 기존 솔루션을 그대로 사용할 수 있습니다. – Serlite