| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity 进阶 之 判断基于物体所处位置(前后左右)/ 方法原理 /注意事项的简单整理 -> 正文阅读 |
|
[游戏开发]Unity 进阶 之 判断基于物体所处位置(前后左右)/ 方法原理 /注意事项的简单整理 |
Unity 进阶 之 判断基于物体所处位置(前后左右)/ 方法原理 /注意事项的简单整理目录 Unity 进阶 之 判断基于物体所处位置(前后左右)/ 方法原理 /注意事项的简单整理 一、简单介绍Unity中的一些知识点整理。 本节简单介绍在Unity开发中的,判断某个物体在某个物体的位置(相对的前后左右判断),便于根据位置进行一些其他的操作,如果你有新的方式也可以留言,多谢。 二、实现原理1、在Unity中,使用点积进行前后的判断 ?? Vector3 dir = target.position - transform.position; //位置差,方向??? ? ?? Vector3.Dot(transform.forward, dir); 返回值为正时,目标在自己的前方,反之在自己的后方 2、在Unity中,使用叉积的 y 值进行左右判断 ? Vector3.Cross(transform.forward, target.position).y ? 返回值为正时,目标在自己的右方,反之在自己的左方 cross出来,就只有 y是计算 x和z 的情况,x是计算? y的情况,z是0;因此 左右关系,是由x和z决定的。) 三、注意事项1、一个相对另一个物体的判断,最好使用他们间的相对位置判断最后准确,这样可以避免判断的错误 2、实际应用中,合理的使用这种关系,和变换这种关系的使用,拓展出一些新功能的使用,大家结合实际开发使用即可 四、效果预览五、实现步骤1、打开 Unity ,新建空工程 2、在场景中,布局场景,用于演示 3、创建脚本,一个用来封装判断函数,一个用来测试函数功能 ? 4、把测试脚本挂载到场景中,并且对应赋值 5、运行场景,效果如上,随着 BaseTransform 转动 或者 Player 移动到不同位置,打印结果就会相应结果 六、关键代码1、JudgeIsForwardRightBaseSomeOneTransfrom
2、TestJudgeIsForwardRightBaseSomeOneTransfrom
七、附录点积判断两个物体的位置 关系,是可以通过 这个 cos<a,b> 来判断,知道了这个余玄值,就可以知道 这个角度了。 ?几何的定义:?a·b=|a|*|b|*cos<a,b>? 对于n维度代数定义: 它在Unity中 调用是通过Vector3.Dot(),Unity中使用的也是代数公式
如何判断的方位: 使用 a 物体的transform.forward向量与 a 物体到 b 的方向做点击就可以得到这个余弦值了 a 到 b 的方向: otherObj.transform.position – transform.position transform.forward 是玩家正面朝向 方向 大于0则面对,否则则背对着。当然这个计算也会有一点误差,但大致够用。 ?因为求的角度用的是 单位向量,所以可以直接求得cos<a,b> 这个角度值 还可以用来判断是否在视野内,一般情况下人的视野是在124度内,游戏里一般是限制在90度左右,视距就直接是两点之间的距离了。 a·b= |a| *|b| * cos<a,b>?? =>??? a·b= |1| cos<a,b>的 含义图: 作用:
叉积是一种在向量空间中向量的二元运算。与点积不同,它的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量和垂直。其应用也十分广泛,通常应用于物理学光学和计算机图形学中。 叉积的定义:?c =a x b??其中a,b,c均为向量。即两个向量的叉积得到的还是向量!? ? 性质:
参考博文:https://blog.csdn.net/qq2512667/article/details/79841333/ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/25 19:30:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |