码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Unity 导航寻路快速上手


    搭建一个基本的寻路系统

    寻路角色与场景

    创建一个胶囊体作为玩家,添加刚体组件,并且冻结所有旋转和 y 轴的位置;

    之后为玩家添加导航网格代理组件,即 NavMeshAgent

    添加外部的场景模型(或者自行搭建),并移动摄像机到一个合适的位置;

    技巧:可以先在场景中对准位置,然后取 hierarchy 面板,右键点击主摄像机,选择 align with view,即可把摄像机视角定位为目前场景视角!

    在这里插入图片描述


    设置场景导航与烘焙

    选中场景中除了玩家以外的所有静态物体,在属性面板最右上角的 "static" ,点击小三角,选择 navigation static;
    如果弹出提示说需要应用到子物体,点击确认应用即可!

    在这里插入图片描述


    依次点击 window -> ai -> navigation 打开导航控制面板;

    navigation 面板有四个子面板,目前我们仅需要关注 bake 面板,点击进入,直接点击右下角 bake 按钮进行场景导航网格的烘焙;

    烘焙完成后,场景中我们之前设置的静态物体均出现淡蓝色导航网格,这表示玩家可以行走的路段!

    在这里插入图片描述


    鼠标点击导航

    新建脚本 NavClick.cs,以下是全部代码:

    1. 首先获取导航网格对象以及主摄像机
    2. 照抄屏幕发射射线的代码
    3. agent.SetDestination 方法可以设置玩家的导航点,即玩家会根据导航网格来计算最优路径来到达目的地
    4. Debug.DrawLine 为了显示射线更清晰,我们可以使用此方法在场景面板中显示红色射线轨迹!
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.AI;
    
    public class NavClick : MonoBehaviour
    {
        public NavMeshAgent agent;
    
        public Camera camera;
    
        void Update()
        {
            if (Input.GetMouseButtonDown(0))
            {
                Ray ray = camera.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                if (Physics.Raycast(ray, out hit))
                {
                    agent.SetDestination(hit.point);
                    Debug.DrawLine(camera.transform.position,hit.point,Color.red);
                }
            }
        }
    }
    

    代码挂载到主摄像机,并设置好导航网格代理之后,点击运行按钮,即告完成;

    此时我们可实现类似 LOL 的点击位置玩家计算路径并前往的效果了


    一些废话

    别以为这就学完了,这仅仅是启发你的兴趣,后面还要好多要学的!!!

  • 相关阅读:
    时序预测 | MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元时间序列预测
    一种新的群体智能优化算法:麻雀搜索算法(SSA)(Matlab代码实现)
    [OS-Linux] 创建新用户以及 使用私钥登录Linux
    commons-collections4工具常用方法
    云表|都有生产管理模块,MES和ERP有什么不同,该如何选择
    地球系统模式的应用与进阶丨CESM丨Linux丨CLM丨代码修改等
    看了两位阿里P10的成长经历,我的认知升华了
    Vuex入门
    GBase 8c向表中插入数据
    如何使用 TypeScript 编写“ Hello World “程序
  • 原文地址:https://blog.csdn.net/delete_you/article/details/127036991
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号