自动寻路

本教程详细介绍了如何在Unity中实现自动寻路功能,包括创建地形、添加角色、设置障碍物、烘焙寻路网格、配置角色移动组件及编写脚本实现点击目标自动寻路,覆盖从基础到进阶的全部流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎来到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 导航网格行走

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值