Unity基础——向量

简介: Unity基础——向量

向量

三维向量即Vector3

Vector3有两种几何意义

1. 位置——代表一个点

this.transform.position

2. 方向——代表一个方向

this.transform.forward
this.transform.up

两点决定一个向量

举个例子:

根据A、B两个点来求AB向量

Vector3 A=new Vector3(1,2,3);
Vector3 B=new Vector3(5,1,5);
Vector3 AB=B - A;

零向量(0,0,0),零向量是唯一一个大小为0的向量

Vector3.zero

负向量(X,Y,Z)的负向量为(-X,-Y,-Z),负向量和原向量大小相等,方向相反

-Vector3.forward

向量的模长

向量的模长就是向量的长度,因为向量由两个点得到的,所以向量的模长就是两个点之间的距离。模长公式为√X²+Y²+Z²,在Unity中,如果我们想要得到向量AB的模长,可以使用AB.magnitude。


单位向量

模长为1的向量就是单位向量,任意一个向量经过归一化就是单位向量。在我们只需要方向,而不想让模长影响计算结果时可以使用单位向量。单位向量=(X/模长,Y/模长,Z/模长),在Unity中,如果我们想要得到单位向量AB的模长,可以使用AB.normalized或AB/AB.magnitude。


向量点乘

点乘计算公式:向量*向量=标量

点乘可以得到一个向量,这个向量就是在自己向量上投影的长度。点乘结果大于0两个向量夹角为锐角;点乘结果等于0两个向量夹角为直角;点乘结果小于0两个向量夹角为钝角。

由此我们可以在制作游戏的时候通过这个规律来判断敌方的大致方位。Vector3提供了计算点乘的方法,举个例子:

Debug.DrawRay(this.transform.position,this.transform.forward,Color.red)

Debug.DrawRay(this.transform.position,target.position-this.transform.position,Color.red)
//this.transform.forward:自己的面朝向

我们可以通过该代码在Unity中清楚的查看向量的具体方向

那么如何通过点乘推导公式算出夹角呢

首先用单位向量算出点乘结果

dotResult=Vector3.Dot(this.transform.forward,(target.position-this.transform.position).normalized);

然后用反三角函数得出角度并输出它

Print(“角度”+Mathf.Acos(dotResult)*Mathf.Rad2Deg);

或者直接用下列语句输出他

Print(“角度”+Vector3.Angle(this.transform.forward,target.position-this.transform.position));


向量叉乘

Unity提供了比较简单的叉乘计算方式,我们可以使用Vector3.Cross(A.position,B.position)来计算AB的叉乘。我们可以通过向量叉乘得到一个平面的法向量,从而得到两个向量之间的左右位置关系。

目录
相关文章
|
11月前
|
图形学
Unity 向量
Unity 向量
|
图形学
unity基础-坦克炮管旋转发射炮弹(向量基础,射线碰撞,物体实例化)
unity基础-坦克炮管旋转发射炮弹(向量基础,射线碰撞,物体实例化)
402 0
|
图形学
Unity【RaycastHit】- 关于射线投射碰撞信息中normal法线向量的运用
Unity【RaycastHit】- 关于射线投射碰撞信息中normal法线向量的运用
432 1
Unity【RaycastHit】- 关于射线投射碰撞信息中normal法线向量的运用
|
vr&ar 图形学
【Unity3D 灵巧小知识点】 ☀️ | 求解 两个向量的夹角度数
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
【Unity3D 灵巧小知识点】 ☀️ | 求解 两个向量的夹角度数
|
vr&ar 图形学
【Unity3D 灵巧小知识点】☀️ | Unity 四元数、欧拉角 与 方向向量 之间转换
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。
|
图形学
Unity3d数学基础之向量
这只是基础的一些数学知识,后面会为大家整理一些,unity中如何使用向量,向量在unity中的各种算法及其运算法则与mathf函数的使用。 向量是2D、3D数学研究的标准工具,在3D游戏中向量是基础。
964 0
|
3月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
177 6
|
2月前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
105 4
|
3月前
|
图形学 缓存 算法
掌握这五大绝招,让您的Unity游戏瞬间加载完毕,从此告别漫长等待,大幅提升玩家首次体验的满意度与留存率!
【8月更文挑战第31天】游戏的加载时间是影响玩家初次体验的关键因素,特别是在移动设备上。本文介绍了几种常见的Unity游戏加载优化方法,包括资源的预加载与异步加载、使用AssetBundles管理动态资源、纹理和模型优化、合理利用缓存系统以及脚本优化。通过具体示例代码展示了如何实现异步加载场景,并提出了针对不同资源的优化策略。综合运用这些技术可以显著缩短加载时间,提升玩家满意度。
154 5
|
2月前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
136 3
下一篇
无影云桌面