- 用户指南
- 资源商店 (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) 部署
- 使用网络播放器中的信任链系统
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
从一个对象到另一个对象的方向和距离
将空间的一个点与另一个点相减,所得结果为从一个对象“指向”另一个对象的向量。
// Gets a vector that points from the player's position to the target's. var heading = target.position - player.position;
此向量指向目标对象方向,其量值等于两点之间的距离。这通常需要使用单位向量来指示其与目标的方向和距离(如抛射子弹)。对象之间的距离等于指向向量的量值,将该向量除以自身量值即为单位向量:
var distance = heading.magnitude; var direction = heading / distance; // This is now the normalized direction.
最好不要将此方法同时用于量值和单位化属性,因为这两者都会占用很大的 CPU(两者都需要计算平方根)。
如果只需比较距离(如执行大致检查),则完全无需计算量值。sqrMagnitude 属性将计算量值的平方值,计算方法与量值相似,但无需消耗时间计算平方根。这样,就可以比较量值的平方值与距离的平方值,而非量值和已知的距离:
if (heading.sqrMagnitude < maxRange * maxRange) { // Target is within range. }
相对于比较真实的量值,此方法效率更高。
有时候,我们需要计算地上的点与目标之间的距离。例如,想象一名站在地上的玩家需要碰到悬浮在空中的目标。如果将目标位置与玩家位置的坐标值相减,则结果向量将向上指向目标。此变换不适合为此玩家定向,因为他也将指向上方;真正需要的是一个从玩家位置指向目标正下方的地面位置的向量。只需将 Y 轴坐标设为 0,再将两个向量相减即可计算出两者的距离:-
var heading = target.position - player.position; heading.y = 0; // This is the overground heading.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论