物理射线、导航网格寻路

2023-11-10

每日一句:努力追上你的每天都是美好的,因为未来可期

目录

射线检测

需求1.物体射线到一定距离会改变物体状态(降落伞)

需求2.鼠标点哪走哪.寻路+射线/点击小地图,人物到达指定位置

需求3.做准心效果【射线碰到物体有UI跟随效果】

寻路系统

实现寻路方法、步骤:

Bake(烘焙)参数


射线检测

从指定坐标和轴向投射一条隐形线并检测是否有碰撞体在线上

Physics.Raycast(Vector3 origin[射线原点],Vector3 direction[射线方向],RaycastHit hit[射线碰撞参数:用来存储射线碰到的碰撞体数据],float distance[射线距离],int LayerMask[遮罩层:用来指定射线检测可忽略的层级])

需求1.物体射线到一定距离会改变物体状态(降落伞)

RaycastHit hit;

    private Renderer render;

    public Rigidbody rig;

    void Start()

    {

        render = GetComponent<Renderer>();

        rig = GetComponent<Rigidbody>();

    }

    void Update()

    {

        if(Physics.Raycast(transform .position,Vector3.down,out hit,5))

        {

            if(hit.collider.tag=="ground")

            {

                render.material.color = Color.black;

                rig.drag = 10;

            }

        }

}

需求2.鼠标点哪走哪.寻路+射线/点击小地图,人物到达指定位置

private Ray ray;

    private RaycastHit hit;

private NavMeshAgent agent;

public Camera mapcamera;

    void Start()

    {

        agent = this.GetComponent<NavMeshAgent>();

    }

    void Update()

    {

        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        ray = mapcamera.ScreenPointToRay(Input.mousePosition);

        //返回摄像机通过屏幕点的光线

        if(Physics.Raycast(ray,out hit,100)&&Input.GetMouseButtonDown(0))

        {

            agent.SetDestination(hit.point);

        }

}

 

需求3.做准心效果【射线碰到物体有UI跟随效果】

private Ray ray;

    private RaycastHit hit;

    public LayerMask layer;

    public RectTransform UI;//准心

    void Update()

    {

        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit, 100, layer.value))

        {

            UI.gameObject.SetActive(true);

            UI.position = Input.mousePosition;//都以像素为单位

        }

        else

        {

            UI.gameObject.SetActive(false);

        }

}

寻路系统

常用方法:

路点寻路、单元格寻路、网格寻路

实现寻路方法、步骤:

  1. 确定寻路者,添加NavMeshAgent组件
  2. 烘焙寻路路面[将场景中不动的物体勾选Navigation static——>烘焙寻路网格(window-AI-Navigation,点击Bake)
  3. 程序实现寻路算法

private NavMeshAgent agent;

public Transform target;

void Start()

{agent.SetDestination(target.position);}

NavMeshAgent

 

共分几路走:

1.Areas区域层

 

2.Object里设置对应区域

3.Area Mask区域遮罩(选到对应层)

Bake(烘焙)参数

 

Areas 后边一栏的消耗值

寻路区域消耗度,数值越大,寻路区域消耗越大

在区域消耗数值一样大的情况下,会选择最优(最近)路面寻路

GetComponent<NavMeshAgent>().areaMask=9

 

寻路区域每一区域都是2的幂

加它物体即能运动又能挡住寻路物体

搭桥、走台阶start路线起始位置 End路线目标位置

Directional是否允许双向穿越

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

物理射线、导航网格寻路 的相关文章

  • Ubuntu22.04使用中文输入法

    安装的时候选择了英文安装 之后切换到中文 忘记还要写中文注释 发现在语言设置里不能添加输入法 仔细找了以下发现输入法的设置改到了键盘设置里 网络上查到的大部分都是老版本的ubuntu 这个是2204版本 输入法设置位置不同

随机推荐

  • 闪回事务查询+闪回事务查询案例

    闪回事务查询 1闪回事务查询是闪回版本查询的一个扩充 2闪回事务查询可以审计某个事务或者撤销一个已经提交的事务 闪回事务查询案例 测试数据 create table sct4 id number 4 name varchar2 20 ins
  • uos,qt,linuxdeployqt,qt-installer-framework, 生成安装包的记录

    注 使用源码生成安装包的环境要求 已安装QT v5 5 24 DTK QTcreator linuxdeployqt qt installer framework v5 9 的UOS v20 1 打开QTcreator 新建项目 2 选择侧
  • python随机生成验证码,数字+大小写字母

    ASCII码的对照链接 大写字母的十进制范围是 65 91 小写字母的十进制范围是 97 123 数字的十进制范围是 48 58 思路 1 先在空链表中添加大小写字母和数字 2 从列表中随机选择四个验证码 3 将列表转化成字符串输出 代码如
  • python 进行排序的两种方式 sort和sorted

    方法1 用List的成员函数sort进行排序 方法2 用内建函数sorted进行排序 sort函数定义 sort cmp None key None reverse False sorted函数定义 sorted iterable cmp
  • Cannot invoke “String.equalsIgnoreCase(String)“ because “code“ is null

    问题 同时开启多个项目 端口号不一致导致项目前后端错乱匹配 解决办法 后端 ruoyi admin下的application yml中的port 端口号 前端 vue config js里的port 端口号修改一致
  • cpp 解析HTML之 htmlcxx

    html与xml格式上比较相似 但xml不并一定能支持html的解析 这里介绍一个c 解析html的开源项目 htmlcxx 一 代码示例 1 项目源码下载之后 使用vs打开即可 默认为生成 lib静态库及MTd模式 可以在属性中修改指定为
  • httprunner测试框架3--har2case录制脚本

    har2case录制脚本 录制脚本 只是一个过渡 可以将录制的 har脚本快速转化成httprunner脚本文件 不能依靠录制 har2case可以将 har文件转化成yaml格式或者json格式的httprunner的脚本 可以借助fid
  • java代码kafka初始化producer和consumer

    目录 一 初始化producer对象 序列化消息 生产者发送消息的三种方式 kafka生产者其它详细知识 二 初始化consumer对象 反序列化消息 consumer取消订阅的方式consumer unsubscribe 使用自定义的序列
  • 回溯法解决地图填色问题

    目录 回溯法 最大度优先 最少可选颜色优先 向前探测 随机产生不同规模的图 分析算法效率与图规模的关系 四色 回溯法 回溯法的基本思想是采用递归和深度优先搜索的方法 尝试在一组可能的解中搜索出符合要求的解 在搜索过程中 若发现当前所选的方案
  • 颜色值不透明度对应表(0%-100%)

    不透明度 ps 可以理解为alpha 0 1的值
  • 腾讯大佬告诉你,写Python到底用什么IDE合适

    不管你是 Python 新手还是老鸟 肯定纠结过一个问题 到底用什么编辑器写 Python 代码好 为此 我们调查了数十位鹅厂程序猿们爱用的 Python IDE 从他们对每款编辑器的看法中 也许能给你一点启示 入门Python其实很容易
  • lzma sdk文件压缩与解压

    最新版的lzma sdk可以去SourceForge上面获取 具体地址为点击打开链接 7z官网点击打开链接 英文版 点击打开链接 中文版 我用lzma sdk主要是为了用来压缩和解压文件用的 其实适当的用法可以用来制作安装包 因为安装包也是
  • 在Linux的Ubuntu系统下安装QT及相关环境配置

    安装QT 从官网下载QT的安装包 在本地安装 本次使用的是Ubuntu18 06以及QT5 14 2 下文皆使用此版本作为示例 首先安装QT 具体操作如下 1 使用cd命令 cd home usr download 切换至安装包所在的目录下
  • Proteus仿真时数码管不能动态显示的问题及解决方法

    今天做Proteus仿真时遇到了数码管不能动态显示的问题 我的程序是用单片机P1口控制数码管段选 P2口低四位控制数码管位选 数码管1ms显示一位 全部刷新需要4ms 正常情况下人眼是感受不到这个速度下数码管的刷新过程的 所以他应该是这个样
  • 【图文解析 】Java中的Liu、继承、组合

    Alt Shift s 快捷键
  • Vue Element-ui el-table sortablejs 表格拖拽排序

    首先要在项目中本地安装 sortablejs 执行 npm install sortablejs save 然后在要实现表格拖拽的 vue文件中 引入 sortablejs import Sortable from sortablejs 基
  • PPPOE协议工作流程

    PPPoE Point to Point Protocol over Ethernet 基于以太网的点对点协议 的工作流程包含发现 Discovery 和会话 Session 两个阶段 发现阶段是无状态的 目的是获得PPPoE 终端 在局端
  • A5M2使用

    目录 一 修改语言 二 连接数据库 三 SQL相关 3 1 新建SQL 3 2 生成增删改查SQL 方式一 方式二 3 3 生成批量插入insert语句 3 4 生成DDL 3 5 SQL整形 3 6 SELECT 之后修改数据 3 7 生
  • 网络编程的无冕之王-Netty入门和核心组件介绍

    最近我在研究Netty 之前只是经常听说 并没有实际做过研究 为什么突然要好好研究一下它 主要是因为前段时间 我在看RocketMQ底层原理的时候发现它的底层的网络通信都是基于Netty 然后网上一查 果然 大家太多的耳熟能详的工具组件 都
  • 物理射线、导航网格寻路

    每日一句 努力追上你的每天都是美好的 因为未来可期 目录 射线检测 需求1 物体射线到一定距离会改变物体状态 降落伞 需求2 鼠标点哪走哪 寻路 射线 点击小地图 人物到达指定位置 需求3 做准心效果 射线碰到物体有UI跟随效果 寻路系统