根据2d的旋转创建速度公式?

时间:2015-05-17 22:32:33

标签: math 3d rotation velocity

所以我有一点数学问题。这是件。

Input:
Rot = Rotation (degrees).  This is the rotation of the "player".  This is also the yaw.
Vel.X = This is the left/rightward movement that would be happening if it weren't rotated
Vel.Z = Same as last except its up/down movement

Output:
Result.X = This is the actual movement that should be happening along the x axis considering rotation
Result.Z = Same as last

基本上情况是玩家站在“Rot”旋转的平台上。按下方向键时,相应地将速度加到“Vel”值。但是,如果旋转不是0,则不会产生正确的结果,因为当玩家旋转时左移动变为相对。

你能不能告诉我一个能找到正确的x和y运动的公式,这会导致玩家相对于它的旋转移动?

1 个答案:

答案 0 :(得分:1)

这个问题可能是游戏编程中最基本的轮换问题。

使用您的Vel.XVel.Z值,您可能会想到您希望在x / z平面中旋转的矢量(而不是x / y - 但同样的想法)。无论速度还是位置,方法都是一样的。通过简单的谷歌搜索,我们发现对于2D矢量旋转,公式为:

Result.X = Vel.X * cos(Rot) - Vel.Z * sin(Rot);
Result.Z = Vel.X * sin(Rot) + Vel.Z * cos(Rot);