导航系统—导航网络的生成
1)导航网格的烘焙:Windows—Navigation
在烘焙之前要确保环境的Static是勾选上的(至少要保证Navigation Static是勾选上的)
2)Navigation中的Bake进行烘焙,可以通过修改Agent Radius 进行调整边缘(选中右下角的Bake可以查看可行走区域)
3)如果需要任务可以穿过草丛,将草丛的Navigation Static都取消选中
4)如果不想在某个组件上生成导航网格,则需要Navigation中的Navigation Area 选择成Not Walkable模式,然后重新点击Bake进行渲染即可。
5)控制人物在导航图上进行行走:给人物添加一个Nav Mesh Agent属性组件(要保证生成的圆柱体和人物身躯大小保持一致,在radius中进行调整)
6)控制人物移动:通过鼠标单击目的地,人物自动走到目的地处。使用代码进行开发
代码中要实现的效果是获取目标位置,使用射线检测来完成。在鼠标点击的位置发射一条射线,判断和哪里发生碰撞,以获取点。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;//正确输入命名空间
public class Hero : MonoBehaviour {
public NavMeshAgent agent;//只有这样才能正确命名这个
void Update () {
if (Input.GetMouseButtonDown(0))//只有当鼠标点击时,需要进行检测,0表示鼠标左键
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//获取射线。ScreenPointToRay将屏幕坐标转换成射线,通过鼠标点击进行屏幕坐标获取
RaycastHit hit;