Vector 求给定方向上向量的大小

Vector 求给定方向上向量的大小,vector,unity3d,magnitude,Vector,Unity3d,Magnitude,我正在Unity3D中编写一个工具,它允许拖动点来调整形状大小: 阻力点只能沿曲面法线移动(即示例立方体不能变形,只能拉长) 当然,鼠标可以向任何方向拖动,因此我尝试计算沿曲面法线拖动的距离 目前我正在做以下工作: public static float NormalMoveHandle(Vector3 position, Vector3 normal) { Vector3 newPosition = FreeMoveHandle(position); Vector3 drag

我正在Unity3D中编写一个工具,它允许拖动点来调整形状大小:

阻力点只能沿曲面法线移动(即示例立方体不能变形,只能拉长)

当然,鼠标可以向任何方向拖动,因此我尝试计算沿曲面法线拖动的距离

目前我正在做以下工作:

public static float NormalMoveHandle(Vector3 position, Vector3 normal)
{
    Vector3 newPosition = FreeMoveHandle(position);
    Vector3 dragVector = newPosition - position;

    return Vector3.Dot(dragVector, normal) * dragVector.magnitude;
}
然而,我得到了不可预测的结果:

当拖动超过一小段距离时,该值将突然变为NaN:

如果我调整我的计算,我会得到更稳定的行为,但手柄会变得迟钝。我相信这证明了手柄的功能;问题出在我的数学上

return Vector3.Dot(dragVector, normal);

我的震级计算有错误吗?

在第一个代码片段中,将点积乘以
dragVector.magnity
。在最后的第二个片段中,您不是。你到底在用哪一个?第二个看起来像是正确的。我正在尝试让第一个代码段工作,因为阻力的大小很重要。第二个片段可以工作,但感觉很慢,因为它根据角度在每帧0-1个单位之间进行调整。