微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

unity归一化功能

如何解决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 举报,一经查实,本站将立刻删除。