如何从速度和3维角度矢量获得3维速度矢量

时间:2015-10-11 22:05:40

标签: lua game-physics roblox

所以我有一个名为

的函数
function AngleToVector(speed,xAngle,yAngle,zAngle)

    local angle = Vector3.new(xAngle,yAngle,zAngle)

    --
    -- calculations
    --

    local position = Vector3.new(SOMETHING,SOMETHING,SOMETHING)
    return position

end

我决定改写整个问题。在图中,sqrt(27)是子弹在一秒钟内行进的距离。假设我知道3个角度决定了这条线指向的位置。我正在尝试使用我的“速度”标量找到3,红绿蓝和虚线的长度,以及显示我标量方向的3个角度。

enter image description here

2 个答案:

答案 0 :(得分:0)

您声明返回的最终Vector3应包含主题应该介入以达到特定速度的值。这实际上很直接。返回的Vector3应该是角度向量的单位向量乘以速度标量。

这是一个数学问题,而不是编程问题,我不熟悉您正在使用的库,所以我将以数学方式回答它。首先,将角度矢量的每个分量除以角度矢量的大小。这为您提供了该方向的单位矢量(例如,该方向为1米)。将此单位向量乘以给定的速度,这将为您提供speed个步骤。然后,您可以将此新矢量添加到要移动的对象的当前位置。

我建议在矢量和矩阵上做一些阅读。

答案 1 :(得分:0)

velocityVector = CFrame.Angles(xAngle,yAngle,zAngle).lookVector*speed

可能是你想要的。 CFrame.lookVector为您提供Luke所谈论的单位Vector。 CFrame当你习惯它时,一切都变得容易了。