如何实现向量(向量数学)?

发布于 2024-12-10 04:38:38 字数 459 浏览 0 评论 0原文

目前我正在制作一个突破游戏,并定义我正在使用的对象的位置或运动:

float mX, mY;
float speedX, speedY;   

为了移动对象,我将某个方向的速度添加到当前位置(mX += speedX)。

但我已经读了很多关于我“应该”使用向量而不是上面的内容,我现在计划这样做。我已经阅读了一些矢量数学知识,但我不知道如何在我的游戏中实现它。关于数学本身有很多信息,但我在代码方面找不到任何内容。我可以想出:

float mX, mY;
float direction;
float velocity;  

但我有点卡住了。我知道我应该以速度将对象移动到方向,可能需要时间因素,但是如何呢?

(顺便说一句,我在 Android 上使用 openGL-ES 制作它)

Currently i'm making a breakout game, and to define objects' location or movement i'm using :

float mX, mY;
float speedX, speedY;   

And to move an object I add the speed in a certain direction to the current position (mX += speedX).

But I've read alot on that I 'should' be using vectors instead of the above, wich I now plan on doing. I've read up on some of this vector math, but I don't know how I could implement this in my game. There's alot of information on the math itself, but I couldn't find anything on the code-side of it. I could come up with:

float mX, mY;
float direction;
float velocity;  

But here i'm kinda stuck. I know I should move the object to direction with velocity, probably with a factor of time, but how ?

(btw, i''m making it with openGL-ES on Android)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猛虎独行 2024-12-17 04:38:38

二维向量有两个维度:(vx, vy)。这就是你所需要的。

您可以通过计算所谓的“单位向量”来找到方向:一个大小为 1 的向量,指向您要去的方向。

您可以使用以下公式计算幅度:magnitude = sqrt(vx*vx + vy*vy)

将两个分量除以幅度即可得到单位向量:

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

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

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

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

这都是基本的矢量内容。读一点书就能大有帮助。

A vector in 2D has two dimensions: (vx, vy). That's all you need.

You find the direction by calculating what's called 'unit vector': a vector of magnitude 1 that points in the direction you're going.

You calculate magnitude using this formula: magnitude = sqrt(vx*vx + vy*vy)

You get the unit vector by dividing both components by the magnitude:

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

If you are moving with a constant velocity over a time step dt, then the distance you move in each direction is:

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

This assumes no acceleration over that time period.

This is all basic vector stuff. A little reading could go a long way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文