基于Unity实现的目标追踪任务指示模块

 一、环境布置

第一人称模式: 

二、新建脚本命名为任务指示器

Arrow:箭头图像
target:指示目标
8/9行通过lambad表达式,方便获取它们的对应属性
静态的rect对象作用是简化代码

 

13:判断是否存在对象,防止空引用报错
14:使用摄像机的方法,将世界坐标系中的目标位置转换为摄像机的视口坐标系
17:判断它是否在这个范围内,就知道玩家是否看到指示目标
19:通过计算将视口坐标转换为以屏幕为中心的原点的UI坐标系(因为UI坐标是以屏幕中心为原点所以要减去0.5)(转换范围为-0.5—0.5乘以屏幕宽高得到正确的像素坐标)
21:同时箭头不旋转,直接指向目标

在视野之外的时候 

用2D向量计算出和边缘的相交点就行

25:最先计算出屏幕的中心坐标
26:获得目标映射到屏幕上相对于UI的坐标
32:通过向量减法获得标准方向向量
33/35:由于屏幕宽高比不一定是1:1 ,所以我们需要对Y分量进行缩放,防止箭头位置出现偏差
36—40:从屏幕中心沿着目标方向移动多少距离就可以到达屏幕的边缘,用X、Y保存,取二者最小值,确保箭头不会超出屏幕
27—31:需要判断一下是不是在摄像机的正前方

45-47:用正反切函数,计算出相对于原点的极坐标角度,有了这个角度就可以让箭头指向目标了

标记是以UI的形式处理的,在第一人称模式下是可以的,但是在第三人称视角下,就会不能够被主角阻挡

第三人称视角下:

只需要将看到的目标时侯的处理的指示标记换成3D空间即可

首先创建一个材质

 

 

增加两个3D变量, 一个是3D版本的箭头,一个是之前的目标保存,用于处理目标的改变

 只需要改写在视觉范围内的代码即可

21:最开始判断是否和之前的目标一样
23-25:如果不一样,就把3D箭头添加到新的目标上,并且保存新目标
27:之后,就可以计算目标点和相机之间的向量
28:这就是一个方向,直接赋值给3D箭头的前向量,这样它就一直朝向着摄像机了
29:为了保证它在远近距离的大小,将它限制在0.1到1的本地放缩

最后根据是否在视口中,显示和隐藏箭头

 这个脚本由于处理了目标不同的情况,因此可以复制多个替代物,来测试切换目标的效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/929955.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

etcd资源超额

集群内apiserver一直重启,重启kubelet服务后查看日志发现一下报错: Error from server: etcdserver: mvcc: database space exceeded 报错原因: etcd服务未设置自动压缩参数(auto-compact) etcd 默认不会自动 compa…

关于项目二次开发那点事儿

以SpirngbootVue项目为例: 目前项目整体结构: 前端编译基本操作: # 安装依赖 npm install# 在 localhost:8080 启动项目 npm run serve# 运行项目中的构建脚本 npm run build npm run build 该命令执行成功之后,前端项目的目录下…

navicat连接mysql 8.0以上版本2059错误

安装了最新版本8.0.4的mysql之后,使用navicat链接提示以下错误。原因是因为mysql8.0 之前的版本中加密规则是 mysql_native_password,而 mysql8.0 之后的版本加密规则是caching_sha2_password 处理方案 解决方案1:下载安装最新版本navicat…

突破空间限制!从2D到3D:北大等开源Lift3D,助力精准具身智能操作!

文章链接:https://arxiv.org/pdf/2411.18623 项目链接:https://lift3d-web.github.io/ 亮点直击 提出了Lift3D,通过系统地提升隐式和显式的3D机器人表示,提升2D基础模型,构建一个3D操作策略。 对于隐式3D机器人表示&a…

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

本章讲述数据结构中的六大排序算法 欢迎大佬们踊跃讨论,感谢大家支持! 我的博客主页链接 六大排序算法 一.插入排序1.1 直接插入排序1.2 希尔排序 二.选择排序2.1 单向选择排序2.2双向选择排序2.3 堆排序 三.交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoa…

小程序 - 计算器

小程序交互练习 - 计算器小程序 目录 计算器 功能描述 准备工作 创建项目 配置导航栏 创建utils目录 math.js文件内容 calc.js文件内容 页面内容 页面样式内容 页面脚本事件 功能截图 总结 计算器 在日常生活中,计算器是人们广泛使用的工具&#xff0…

Ubuntu22.04安装Steam++(Watt toolkit)

Watt toolkit这个软件可以Github加速,非常方便。但是在Linux系统不好安装和正常使用。下面就以Ubuntu22.04来安装Watt toolkit软件。 在https://steampp.net/官网下载Linux版本: 然后解压这个压缩包: 然后在解压后的文件运行.sh文件&…

[382]基于springboot的辽B代驾管理系统

毕 业 设 计(论 文) 题目:辽B代驾管理系统 摘 要 使用旧方法对辽B代驾管理系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在辽B代驾管理系统的管理上面可以解决许多信息管理上面的难题,比…

github仓库自动同步到gitee

Github Actions是Github推出的自动化CI/CD的功能,我们将使用Github Actions让Github仓库同步到Gitee 同步的原理是利用 SSH 公私钥配对的方式拉取 Github 仓库的代码并推送到 Gitee 仓库中,所以我们需要以下几个步骤 生成 SSH 公私钥添加公钥添加私钥配…

H5与支付宝小程序通信,调起扫一扫

1.public/index.html加入代码 <script>if (navigator.userAgent.indexOf(AliApp) > -1) {document.writeln(<script src"https://appx/web-view.min.js" > < / script>);}window.$my my </script>2.vue其他具体页面加入代码 metho…

MySQL 慢查询日志记录 SQL优化 性能优化 日志查询 Explain

介绍 慢查询日志记录了所有执行时间超过指定参数(long_query_time&#xff0c;单位:秒&#xff0c;默认10秒)的所有SQL语句的日志。MySQL的慢查询日志默认没有开启&#xff0c;需要在MySQL的配置文件(/etc/my.cnf)中配置针对这些慢查询的SQL语句进行优化。 #开启慢查询开关 s…

chromedriver.exe编译

使用例子参考官网 ChromeDriver 使用入门 | Chrome for Developers Chrome for Testing availability 注意&#xff1a;chromedriver版本要与chromium版本号对应。 如何编译chromedriver chrome\test\chromedriver\BUILD.gn 1、ninja -C out/debug chromedriver_server…

JVM-程序计数器与栈

目录 程序计数器1&#xff1a;作用&#xff1a;2&#xff1a;特点&#xff1a;1&#xff1a;线程私有2&#xff1a;内存不会溢出 栈1&#xff1a;介绍&#xff1a;2&#xff1a;问题辨析&#xff1a; 程序计数器 1&#xff1a;作用&#xff1a; 程序计数器的作用就是记录下一条…

2025美赛数学建模常用数据库网站大全

优秀模板写作红宝书数学模型获取——更多资料请点击下方名片进群获取。 一、可以查询美国各个领域经济指标的网站: olap.epsnet.com.cnhttps://www.ers.usda.gov/data-products/rice-yearbook/www.ers.usda.govU.S. Energy Information Administration (EIA) www.eia.govhttp…

IS-IS三

目录 点到点邻接关系建立 ISIS修改链路类型 isis ppp-negotiation 3-way only 仅才用三次握手建立邻居 不向下兼容两次握手 两次握手 自身发送的&#xff08;Hello报文&#xff09;IIH 不携带 p2p adj TLV 不处理点到点邻接状态TLV 三次握手 …

Android10 设备死机的问题分析和解决

最近客户反馈一个问题&#xff0c;设备偶现死机。最后解决&#xff0c;在此记录。 目录 一死机的现象 二死机的类型 三 死机问题分析 1 死机现象的梳理 2 死机日志 1&#xff09;日志分析一 2 日志分析二&#xff08;正确方案&#xff09; 一死机的现象 设备死机&#x…

flex布局容易忽略的角色作用

目录 清除浮动 作用于行内元素 flex-basis宽度 案例一&#xff1a; 案例二&#xff1a; 案例三&#xff1a; flex-grow设置权重 案例一&#xff1a; 案例二&#xff1a; 简写flex-grow:1 0 auto; flex作为一维布局,行和列的使用&#xff0c;忽略的小角色&#xff0c;大…

如何安全地远程控制电脑

在当今的工作环境中&#xff0c;远程控制技术变得越来越关键。无论是远程工作、技术支持&#xff0c;还是常规的维护任务&#xff0c;远程控制都为用户带来了极大的方便。本文将详细探讨远程控制电脑的基本概念、如何安全地进行远程控制电脑的操作&#xff0c;以及RayLink远程控…

Linux实现地址转换和抓包

1.Linux实现地址转换 1.1 SNAT和DNAT NAT:地址转换SNAT:源地址转换DNAT:目的地址转换 内网——》外网&#xff1a;内网色的ip不能直接和公网ip通信&#xff0c;必须要把内网的地址转换成和公网ip通信的地址 外网——》内网&#xff1a;外网也不能直接和内网通信&#xff0c…

与火山引擎合作深化,观测云携一站式监控解决方案登陆万有商城

近日&#xff0c;观测云正式宣布入驻火山引擎的万有商城。作为一款全栈式数据观测与分析平台&#xff0c;观测云的加入不仅丰富了火山引擎生态&#xff0c;也为广大企业用户带来了更便捷的数字化工具&#xff0c;助力企业快速实现业务监控与优化。 从全球覆盖到本地深耕&#x…