文章目录
Unity导航模块
看到一篇自动寻路车辆的Unity仿真,简单使用一下导航模块。
前面已经创建好了一个小车的场景,因此直接来到导航模块。
首先将地面及静态物体设置为navigation static(这是后面bake的前提):
然后打开导航组件模块,选择Bake烘培:
烘培好地图后,为Car添加NavMeshAgent组件:
这时,Car知道自己要Nav了,但还没有目标地点,我们先创建一个空对象TargetObject,并创建Navigation脚本,将两者关联:
脚本如下:
using UnityEngine; using UnityEngine.AI; using System.Collections; public class Navigation : MonoBehaviour { public Transform TargetObject = null; void Start() { if (TargetObject != null) { GetComponent<NavMeshAgent>().destination = TargetObject.position; } } void Update() { } }
效果如下:
2022.10.26
上面只是实现了固定目标地点的导航,每次都要修改目标位置然后重新运行,有点麻烦。下面再记录一种通过鼠标点击确定目的地并实现导航的方法,依然使用的Navigation
脚本:
using UnityEngine; using UnityEngine.AI; using System.Collections; public class Navigation : MonoBehaviour { private NavMeshAgent agent; void Start() { agent = GetComponent<NavMeshAgent>(); } void Update() { if (Input.GetMouseButtonDown(1)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; bool res = Physics.Raycast(ray, out hit); if (res) { Vector3 point = hit.point; agent.SetDestination(point); } } } }
以上。
原文链接:https://blog.csdn.net/qq_40344790/article/details/127513555