2011-10-16 122 views
0

我目前制造突破游戏,并以限定对象的位置或运动的即时使用:(如何实现矢量(矢量数学)?

float mX, mY; 
float speedX, speedY; 

而移动对象我在特定方向上的当前位置添加速度MX + = speedX)。

但我已经读了很多,我'应该'使用矢量而不是上述,我现在打算做。我已经阅读了这个向量数学的一些内容,但我不知道如何在我的游戏中实现这一点。数学本身有很多信息,但是在代码方面我找不到任何东西。我可以拿出:

float mX, mY; 
float direction; 
float velocity; 

但在这里我有点卡住了。我知道我应该将对象移动到directionvelocity,可能是时间的因素,但如何?

(顺便说一句,i''m用OpenGL-ES Android上使它)

回答

3

的载体在2D有两个维度:(vx, vy)。这就是你需要的。

你可以通过计算所谓的'单位矢量'来找到方向:一个幅度为1的矢量指向你要去的方向。 magnitude = sqrt(vx*vx + vy*vy)

您由大小除以两种组分得到的单位矢量:

您使用此公式计算幅值

(ux, uy) = (vx/magnitude, vy/magnitude) 

如果正在以恒定速度在一时间步骤dt的移动,那么您在各个方向上移动的距离为:

(dx, dy) = (vx*dt, vy*dt) 

此假定在该时间段内没有加速度。

这是所有基本的矢量东西。一点点阅读可能会有很长的路要走。

+0

你可能知道一些很好的例子,教程或网站吗? – user717572

+2

在基本向量上有数百万的书籍和网页。选一个。这不是扫描页面和成为专家的问题。你必须做一些工作来学习它,但它是值得的。启动Google并查看它带回的内容。 – duffymo