NavMeshAgent(导航网络代理组件):给物体添加,并且寻找到最短的路径;
OffMeshLink(分离网络连接):完成物体在两者之间的跳跃;
NavMeshObstacle(网格障碍组件):可添加到动态的障碍物上,障碍物会动态的改变它所在地点的网格信息;
注:寻路之前先对场景进行烘焙
public GameObject target;
void Start()
{
GetComponent<NavMeshAgent>().SetDestination(target.transform.position);
}
物体寻路到鼠标点击的位置
private NavMeshAgent agent;
void Start()
{
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
if(Input.GetMouseButtonDown(1))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//获取鼠标的位置
RaycastHit hit;
if(Physici.Raycast(ray.out hit,100))//100为射线的长度
{
agent.SetDestination(hit.point);
}
}
}
区域内随机生成
public GameObject enemy;
public float spawnTime = 3f;
public Transform[] spawnPoints;//产生物体的区域
void Start()
{
InvokeRepeating("Spawn",spawnTime,SpawnTime);
}
void Spawn()
{
int i = Random.Range(0,spawnPoints.Length);//随机产生
Instantiate(enemy,spawnPoints[i].position,Quaternion.identity);//产生物体
}
障碍物的实现,障碍物不能烘焙
public GameObject target;
public GmaeObject aa;
void Start()
{
GetComponent<NavMeshAgent>().SetDestination(target.transform.position);
}
void Update()
{
if(Input.GetMouseButtonDown(0))
{
aa.GetComponent<NavMeshObstacle>().enable = false;
}
}
分离网络连接,需要在物体上添OffMeshLink组件