欢迎来到unity学习、unity培训
这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌
现在的大部分mmo游戏都有了自动寻路功能。点击场景上的一个位置,角色就会自动寻路过去。中间可能会有很多的障碍物,角色会自动绕过障碍物,最终达到终点。使用Unity来开发手游,自动寻路可以有很多种实现方式。
我们来句一个例子:
点击一个位置,让物体自动躲避障碍物移动的你点击的位置
步骤:
1.创建地形
2.添加角色
3.创建多个障碍物,尽量摆的复杂一点,来检查Navmesh的可用性和效率。
4.选中地形,在Navigation窗口中,设置Navigation Static
5.依次选中障碍物,在avigation窗口中,设置Navigation Static
6.Navigation窗口中,选择Bake(烘焙)界面,点击Bake按钮,进程场景烘焙,就可以烘焙出寻路网格了
7.为角色添加NavMeshAgent组件。Component->Navigation->Nav Mesh Agent
8.为角色新增一个脚本PlayerController.cs,实现点击目标,自动寻路功能
脚本代码:
private NavMeshAgent agent;
private Animator anim;
void Start () {
anim = GetComponent<Animator>();
agent = GetComponent<NavMeshAgent>();
}
void Update () {
RaycastHit hit;
if (Input.GetMouseButton(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
agent.SetDestination(hit.point);
}
}
}
物体上Nav Mesh Agent 组件的属性:
Radius 半径,Speed 速度,Acceleration 加速度,Angular Speed 角速度,Stopping distance 制动距离,Auto Traverse OffMesh Link 自动遍历OffMesh链接,Auto Repath 自动重新寻路,Height 高度,Base offset 基本偏移,Obstacle Avoidance Type 障碍躲避类型,NavMesh Walkable 导航网格行走