unity归一化函数

Unity normalize function

我试图朝我的方向发射子弹 mouse.But 鼠标离我的枪越近,子弹越慢 go.So 我想我应该标准化我的矢量:

Vector3 shootDirection = (mousePosition - shootpoint.transform.position);
 shootDirection.Normalize();

据我所知,向量归一化后,其 x 和 y 将遵循勾股定理:

x^2 + y^2 = 1

但是,如果我在归一化后调试矢量坐标,我会得到:

0,1915651 0,1933651
0,5729401 0,4919207

哪个明显没有遵循rule.Any帮助?

你对毕达哥拉斯定理的看法有点正确。归一化意味着结果向量的 magnitude 将为 1。(https://docs.unity3d.com/ScriptReference/Vector3-magnitude.html)

我无法从你的示例中看出,但你可能需要先存储 vector3 的值,然后再打印它。也许让你的代码:

Vector3 shootDirection = (mousePosition - shootpoint.transform.position).normalized;

看看射击方向是否符合您的预期?

如果不是,您使用的是什么输入,然后是什么输出?

如前所述,顾名思义,Vector33 个分量 x、y、z。

如果您只对 x 和 y 感兴趣,您应该使用 Vector2 并将其归一化:

var shootDirection = (mousePosition - (Vector2)shootpoint.transform.position). normalized;