目前我正在制作突破游戏,并定义对象的位置或我正在使用的动作:
float mX, mY;
float speedX, speedY;
要移动物体,我将速度沿某个方向添加到当前位置(mX + = speedX)。
但我已经阅读了很多关于我应该使用向量而不是上面的内容,我现在打算做什么。我已经阅读了一些矢量数学,但我不知道如何在游戏中实现这一点。关于数学本身有很多信息,但我在代码方面找不到任何东西。我能想出来:
float mX, mY;
float direction;
float velocity;
但在这里我有点卡住了。我知道我应该使用direction
将对象移动到velocity
,可能需要一段时间,但是如何?
(顺便说一句,我在Android上用openGL-ES制作它)
答案 0 :(得分:3)
2D中的矢量有两个维度:(vx, vy)
。这就是你所需要的一切。
通过计算所谓的“单位向量”来找到方向:一个指向你正在前进方向的1级向量。
您可以使用以下公式计算幅度:magnitude = sqrt(vx*vx + vy*vy)
通过将两个分量除以幅度来获得单位向量:
(ux, uy) = (vx/magnitude, vy/magnitude)
如果您在一个时间步长dt内以恒定速度移动,那么您在每个方向上移动的距离为:
(dx, dy) = (vx*dt, vy*dt)
这假设在该时间段内没有加速。
这是所有基本的矢量内容。一点阅读可能会有很长的路要走。