如何解决unity归一化功能
我试图朝鼠标的方向发射子弹。但是鼠标离我的枪越近,子弹走得越慢。所以我想我应该标准化我的向量:
Vector3 shootDirection = (mousePosition - shootpoint.transform.position);
shootDirection.normalize();
据我所知,在对向量进行归一化后,其 x 和 y 将遵循勾股定理:
x^2 + y^2 = 1
但是,如果我在规范化之后调试我的矢量坐标,我会得到这个:
0,1915651 0,1933651
0,5729401 0,4919207
显然不遵守规则。有什么帮助吗?
解决方法
您对勾股定理的看法是正确的。归一化意味着结果向量的 magnitude
将为 1。 (https://docs.unity3d.com/ScriptReference/Vector3-magnitude.html)
我无法从您的示例中看出,但您可能需要在打印之前先存储 vector3 的值。也许让你的代码:
Vector3 shootDirection = (mousePosition - shootpoint.transform.position).normalized;
看看拍摄方向是否更符合您的预期?
如果不是,您使用的是什么输入,然后是什么输出?
,正如所说和名称所暗示的,Vector3
具有 3 个分量 x、y、z。
如果您只对 x 和 y 感兴趣,您应该使用 Vector2
并将其标准化:
var shootDirection = (mousePosition - (Vector2)shootpoint.transform.position). normalized;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。