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;
看看射击方向是否符合您的预期?
如果不是,您使用的是什么输入,然后是什么输出?
如前所述,顾名思义,Vector3
有 3 个分量 x、y、z。
如果您只对 x 和 y 感兴趣,您应该使用 Vector2
并将其归一化:
var shootDirection = (mousePosition - (Vector2)shootpoint.transform.position). normalized;
我试图朝我的方向发射子弹 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;
看看射击方向是否符合您的预期?
如果不是,您使用的是什么输入,然后是什么输出?
如前所述,顾名思义,Vector3
有 3 个分量 x、y、z。
如果您只对 x 和 y 感兴趣,您应该使用 Vector2
并将其归一化:
var shootDirection = (mousePosition - (Vector2)shootpoint.transform.position). normalized;