Unity之Navigation初步实践


一: 先建一个新的scene , 布置一下场景如下,

Unity之Navigation初步实践_unity

二: 准备烘培场景

1⃣️,将需要参与导航的GO,设置成navigation static ,有2种方法

1,选中GO, 在Inspector中选择navigation static , 如下:
Unity之Navigation初步实践_unity_02

2,“Window” -> “AI” -> “Navigation”打开Navigation导航面板,也可以设置“navigation static”, 如下:
Unity之Navigation初步实践_navigation_03

2⃣️,开始烘焙

1,注意

a,所有参与导航的GO,需要设置“navigation static”

b,Navigation Area设置 Walkable:可以走 ,Not Walkable:不可以走。显然,Plane可以走,4个Cube不可以走。

c,要点: 要看到渲染效果 1,要打开Navigation面板 2,要开启Gizmos

2,开始烘焙

在“Navigation”面板中,切换到bake , 点击bake , 如下
Unity之Navigation初步实践_unity_04

3, 烘焙效果如下
Unity之Navigation初步实践_navigation_05

三 :创建一个角色,并使其在场景中寻路

1 , 制作主角 ,我使用的是一个胶囊体(主体) + 一个圆柱体 (指示方向),并为主角挂载“Nav Mesh Agent”组建 ,如下图
Unity之Navigation初步实践_unity_06

2,写脚本,挂载到Player(GO)上

登录后复制


public class NavigationPlayer : MonoBehaviour
{
    [SerializeReference]
    private Camera mainCam;//场景主相机
    [SerializeReference]
    private LayerMask layerWalk;//行走层
    private NavMeshAgent nav;
    private RaycastHit hit;
    private Ray ray;
    void Start()
    {
        this.nav = this.GetComponent<NavMeshAgent>();//获取导航的组建
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButton(0)) {
            this.ray = this.mainCam.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out this.hit, 100, this.layerWalk)) {
                this.nav.SetDestination(this.hit.point);
            }
        }
    }
}


3,创建WalkLayer层,让Plane的层级为WalkLayer
Unity之Navigation初步实践_navigation_07

4,设置脚本NavigationPlayer.cs的数据,如下
Unity之Navigation初步实践_unity_08

四:结果

可以看到,主角方向指向一直是跟着导航路线变动的。
Unity之Navigation初步实践_导航_09



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空