如何解决NavMeshAgent抢夺目标点占有权的问题。
问题:
当控制一群NavMeshAgent向某点移动的时候会出现,NavMeshAgent因为相互抢夺目标点占有权而原地鬼畜的现象。
思路:
1.在Agents移动到目的地附近时主动停止Agent的行动。
2.当所有NavMeshAgent.velocity.sqrMagnitude都小于某个值时,说明大家都来到了目的地。
代码:
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class SimpleAgentGroup : MonoBehaviour {
static float TICK_TIME = 0.5f;
List<NavMeshAgent> Agents = new List<NavMeshAgent>();
bool isMoving = false;
float tickTime = 0;
void Awake () {
foreach (Transform t in transform)
{
Agents.Add(t.GetComponent<NavMeshAgent>());
}
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 10