- 用户指南
- 资源商店 (Asset Store)
- 资源服务器 (Asset Server)(仅限团队许可证)
- 缓存服务器(仅限团队许可证)
- 幕后场景
- 创建游戏
- 运行时实例化预设 (Prefabs)
- 变换 (Transforms)
- 物理
- 添加随机的游戏元素
- 粒子系统(Particle Systems)
- Mecanim 动画系统
- 旧动画系统
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Sound (音频侦听器)
- 游戏界面元素
- 多玩家联网游戏
- iOS 开发入门
- Android 开发入门
- Blackberry 10 开发入门
- Metro:入门指南
- 本地客户端开发入门
- FAQ
- Advanced
- Vector Cookbook
- 资源包(仅限专业版)
- Graphics Features
- 资源数据库 (AssetDatabase)
- 构建播放器管道
- 分析器(仅限专业版)
- 光照贴图快速入门
- 遮挡剔除(仅限专业版)
- 相机使用技巧
- 运行时加载资源
- 通过脚本修改源资源
- 用程序生成网格几何体
- 富文本
- 在 Unity 工程 (Project) 中使用 Mono DLL
- 事件函数的执行顺序
- 移动优化实用指南
- Unity XCode 工程结构
- 优化图形性能
- 减少文件大小
- 理解自动内存管理
- 平台依赖编译
- 泛型函数
- 调试
- 插件(专业版/移动版特有功能)
- 文本场景文件格式(仅限专业版)
- 流媒体资源
- 启动时运行编辑器脚本代码
- 网络模拟
- VisualStudio C 集成
- 分析
- 检查更新
- 安装多版本 Unity
- 故障排除
- Unity 中的阴影
- Unity 中的 IME
- 对集成显卡进行优化
- 网络播放器 (Web Player) 部署
- 使用网络播放器中的信任链系统
了解向量运算
向量运算是制作三维图形、物理和动画的基础,深入了解向量运算有助于充分利用 Unity 的大部分功能。下方介绍了主要的向量运算方法,以及将向量运算用于多种用途时的建议。
加法
两向量相加的值等于将两个向量首尾相接,以原向量为“步长”相加所得的值。注意,参数顺序并不重要,因为无论顺序怎样,所得结果仍然相同。
如果将第一个向量当作空间中的一个点,那么,第二个向量可理解为从该位置的位移或“跳跃”。例如,要在地面某位置找到一个单位大于 5 的点,可以使用以下方式进行计算:
var pointInAir = pointOnGround + new Vector3(0, 5, 0);
如果向量代表力,则更为直观的理解方式是,将其视为含有各自方向和量值的力(量值是指力的大小)。将两个力向量相加所得的新向量即为两者力之和。通常,此概念在计算由多个分力同时作用的力时很有用(例如向前推进的火箭可能会受到侧风的影响)。
减法
向量减法通常用于获取从一个对象到另一个对象的方向与距离。注意,在减法中,两个参数的顺序会影响结果:-
// The vector d has the same magnitude as c but points in the opposite direction. var c = b - a; var d = a - b;
和数字一样,加上一个负向量等于减去一个正向量。
// 两者所得结果相同。 var c = a - b; var c = a + -b;
负向量的长度与原向量长度相同,两向量在同一直线上,方向相反。
标量乘法与除法
讨论向量时,我们通常将普通数值(如浮点值)称为标量。这表示,标量只有“比例”或量值之分,但向量包含量值和方向。
向量与标量的乘积是方向与原向量相同的向量。但是,新向量的量值等于原向量的量值与标量值的乘积。
同样地,标量除法是将原向量的量值除以该标量值所得的商。
当向量表示位移或力时,可使用这些运算。这可在不影响向量方向的同时改变其大小。
将任何向量除以其自身量值时,所得的商为量值为 1 的向量,我们将其称为标准向量。如果将标准向量乘以标量,乘积的量值等于该标量值。力的方向为常量但力量可控时,可使用此运算方法(例如,车轮上的力始终推动车轮向前移动,但其大小由传动器控制)。
点积
点积是将两个向量相乘得出一个标量的运算。此标量等于两个向量量值相乘的结果再乘以两个向量形成的角度的余弦值。两个向量都为单位向量时,余弦值实际上就是第一个向量在第二个向量上的射影长度(或反之亦然 – 参数顺序不会影响结果)。
这一点从角度方面考虑很容易理解,用计算器即可计算出相应的余弦值。下图所示的一些主要余弦值有助于您直观地了解此内容。
点积运算非常简单,可用于 Mathf.Cos 函数或在某些情况下计算向量量值(不是完全相同的两个事物,但有时候是等效的。)但是,点积计算所占用的 CPU 时间更少,因此,这是一个有价值的优化。
叉积
系统还为二维和三维向量定义了其他运算,并且包含任意维数的向量。相反,叉积仅适用于三维向量。它输入两个向量,返回另外一个向量作为结果。
结果向量垂直于两个输入向量。“左手坐标系”可用于根据输入向量的顺序表示输出向量的方向。如果第一个参数指向大拇指方向,第二个参数指向食指方向,则结果将指向中指方向。如果参数顺序相反,则结果向量将指向完全相反的方向,但其量值相同。
此结果的量值等于两个输入向量量值相乘的结果再乘以两个向量形成角度的正弦值。下方列出了一些有用的正弦函数:
由于叉积的返回值中包含一些有用信息,所以看起来比较复杂。但是,和点积一样,叉积是非常有效的数学运算,可用来优化代码,如果不使用叉积,则将依赖于缓慢的超越函数
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论