导航系统(二)

一、导航系统部分Bake属性的效果

1)Agent Radius: 新建一个平面Plane,应用Static属性(可以在Inspector检视图勾选也可以在Navigation导航窗口中勾选“Navigation Static”选项)。设置Bake属性中“Agent Radius”为0.3,烘焙如图:

2)Drop Height:新建一个Cube,应用Static属性。在Navigation中勾选“Generate OffMeshLinks”,在Bake属性中设置“Drop Height”为2.5。烘焙代理跳下平面的导航链接;如下图

3)Step Height:新建阶梯,阶梯的高度为0.2。在Bake属性中设置“Step Height”为0.2。效果如下:

4)Jump Distance: 桥距离

5)Agent Height: 代理高度

6)Height Mesh:勾选Advanced之下的Height Mesh,然后烘焙。使代理贴着平面走。如下

二、代码控制导航代理

1、点击鼠标控制代理运动

using UnityEngine;
using UnityEngine.AI;//引用AI系统

public class AI : MonoBehaviour
{
    public Camera cam;
    NavMeshAgent agent;
    void Start()
    {
        agent = GetComponent<NavMeshAgent>();
    }
    void Update()
    {
        if (Input.GetMouseButtonDown(0))//如果按下鼠标左键
        {
            Vector3 ms = Input.mousePosition;//获取鼠标的位置
            Ray ray = cam.ScreenPointToRay(ms);//将屏幕位置转换为射线
            RaycastHit hit;//声明变量记录射线碰撞信息。这个为射线命中的点
            if (Physics.Raycast(ray, out hit, 100f))//物理静态类中的光线投射方法。(射线投射到命中点,射线长度为100f)
            {
                agent.SetDestination(hit.point); //把目的地,终点赋给agent,即导航代理
            }
        }
    }
}

2、同时应用NavMeshObstacle(障碍物)和NavMeshAgent(导航代理),让代理围着某一点停下

using UnityEngine;
using UnityEngine.AI;//引用AI系统

public class AI : MonoBehaviour
{
    public Camera cam;
    NavMeshAgent agent;
    NavMeshObstacle obstacle;
    void Start()
    {
        //获取组件
        agent = GetComponent<NavMeshAgent>();
        obstacle = GetComponent<NavMeshObstacle>();
        obstacle.enabled = false;
    }
    void Update()
    {
        if (Input.GetMouseButtonDown(0))//如果按下鼠标左键
        {
            Vector3 ms = Input.mousePosition;//获取鼠标的位置
            Ray ray = cam.ScreenPointToRay(ms);//将屏幕位置转换为射线
            RaycastHit hit;//声明变量记录射线碰撞信息。这个为射线命中的点
            if (Physics.Raycast(ray, out hit))//物理静态类中的光线投射方法
            {
                agent.enabled = true;//enabled激活的
                obstacle.enabled = false;
                agent.SetDestination(hit.point); //把目的地,终点赋给agent,即导航代理
            }
        }
        if (agent.enabled && agent.remainingDistance < 2.5 && agent.remainingDistance > 0.5)//enabled(激活的);remainingDistance(剩余距离)
        {
            //agent.Stop();
            agent.enabled = false;
            obstacle.enabled = true;
        }
    }
}
时间: 2024-08-23 00:07:07

导航系统(二)的相关文章

航空概论(历年资料,引之百度文库,PS:未调格式,有点乱)

航空航天尔雅 选择题1. 已经实现了<天方夜谭>中的飞毯设想.-- A--美国2. 地球到月球大约-- C 38 万公里3. 建立了航空史上第一条定期空中路线-- B--德国4. 对于孔明灯来说,最重要的是-- C--自重5. 世界公认的人类第一次重于空气的,有动力驱动的飞行器进行的载人飞行的空速是每小时-- B--46 公里6. 一战期间飞机使用的是双翼飞机-- B--双翼7. 航空业才逐渐兴起-- B--(一次世界大战后)8. 德国制造了第一架喷气式飞机-- D--德国9. 美国实现了人类

导航系统(一)

Unity 的导航系统主要由Navigation编辑器和Nav Mesh Agent.Nav Mesh Obstacle.Off Mesh Link组件组成.其中Navigation编辑器烘焙导航网格,Off Mesh Link组件手动生成网格链接,其余的两个组件则添加到动态游戏对象(敌人.怪等)身上. 一.Navigation Object: ● Navigation Static: 选中的物体将参与烘焙导航(可以在Inspector检视窗口中选择Static类型) ● Generate Of

开发交通运输部&#183;车载导航系统中的第一关——硬件终端如何与服务器通信——玩转通信协议(源码下载)

一.引子与协议说明 之前开发了一个项目——车载导航系统.遇到的第一个问题就是硬件设备如何与服务器通信. 关键在于通信协议! 众所周知:要想实现通信,首先通信双方就要达成通信协议. 话不多说,且看协议:  ————————————————华丽的分割线————————————————— 以上的这些协议说明是不是看得很头大呢? 遵循如此这般的通信协议的硬件设备又如何才能与服务器以及PC顺利通信呢? 还请各位看官稍安勿躁!且听我娓娓道来! 二.基础知识-TCP与粘包 我们都知道,互联网的核心是TCP/I

车载导航系统中GPS的定位

首先购买的车载导航系统有GPS信号接受功能,能够接收GPS的经纬度信号,然后导航终端里面安装的导航地图能够非常详细的显示详细的经纬度坐标和地物信息.导航终端通过接收器接收到卫星24小时不间断发射的免费经纬度信号,然后通过软件系统把这些经纬度信号显示在安装的地图里相相应的经纬度位置,就产生了精确的定位信息.然后能够通过地图上显示的地物信息,知道自己眼下所处的详细位置. GPS是美国从本世纪70年代開始研制.历时20年.耗资200亿美元,于1994年全面建成,具有在海.陆.空进行全方位实时三维导航与

msmms (二) sms与mms 简述!

mms 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . MMS是英文缩写,它可以是Membership Management System的缩写,中文译名为会员管理系统.也可以是Multimedia Messaging Service的缩写,中文译为彩信. 中文名 会员管理系统 外文名 Membership Management System 英文简称 MMS 释    义 一种串流媒体传送协议 常见系统 3种 系统功能 10大功能 目录 1 简介 ? 常见系统 ? 系统构成

离线谷歌地图API的开发笔记(二)

一.地图引擎介绍 离线地图引擎运行在WINDOWS平台上,底层由Visual c++语言开发,编译为OCX插件方式.占用文件少,便于二次开发的快速安装部署. 具有专业地图的基础操作功能:地图放大.缩小.移动.测量距离,测量面积. 支持以下矢量操作:点.线.面.透明矩形.透明圆形.箭头等添加/编辑/删除操作. 软件支持操作系统:Windows98/Me/2000/XP/win7/win8/win10 支持VB,VC,Delphi,C#等开发工具的二次开发, 从此可以专注于您的专业领域,不再为地图开

A*寻路算法的探寻与改良(二)

A*寻路算法的探寻与改良(二) by:田宇轩                                                     第二部分:这部分内容主要是使用C语言编程实现A*,想了解A*算法的优化内容的朋友们可以跳过这部分并阅读稍后更新的其他内容 2.1 回顾 在我的上一篇文章中,我们通过抽象的思维方式得出了A*算法的概念和原理,这一章内容中主要探讨如何用编程实现A*算法. 在数据结构与算法的学习中,每个算法都应该结合一定的数据结构在计算机中存储,然后用对应的函数操控这些

扭转二次大战战局的关键:雷达英雄传奇

麻省理工学院辐射实验室加上美国与英国在雷达方面的努力,可视为孕育当代科技发展的摇篮,这段历程几乎是史无前例的.至少有两项诺贝尔奖——核磁共振与微波激射,可以直接追溯至战时的雷达研发工作.现今,每天有数千架商用飞机展翅升空,事实上,雷达持续追踪所有航空器.许多船舶上也装备了长程导航系统.这些设备实际上都直接源自辐射实验室,就连全球暴风观测系统与电视上的气象预报都是. 晶体管.数字计算机.计算机的阴极射线显示器及内存,都要归功于雷达的研发.微波电话与早期的电视网,也是由战时雷达的研发工作促成的.雷达

凯文&#183;凯利最新演讲完整版:未来的十二个趋势

凯文·凯利最新演讲完整版:未来的十二个趋势 凯文·凯利(KK)<连线>(Wired)杂志创始主编.著有<失控>.<科技想要什么>.<技术元素>.<必然>. KK在深圳分享了未来将发生的十二个趋势: 一.所有的产业都在向分散式结构靠拢 1.“个体专家”分散式: 世界正在发生着翻天覆地的变化,在变动和未知的情况下,就没有所谓的专家了,每一个人都可以做出一些变革和创新,也就都有可能成为专家. 2.企业组织结构分散式: 层级化结构变成分散式的网络结构是一