2011-09-05 108 views
1

Heyo!带矢量和速度的2D矢量数学

我开始在iOS上创建游戏,我正在尝试一个Breakout-clone来启动。作为练习,我想要一个球在一个长方形中反弹,所以我的头部围绕着简单的碰撞,方向和速度。

我的球得到如下:

Point position; // x, y 
float direction; 
float velocity; 

在我的“更新”功能,我想移动球在电流方向。考虑速度和方向的下一个位置是什么?

iOS中的某些内置框架中是否存在任何助手?

我真的很想了解更多关于二维数学,所以如果有人得到一些资源,我会很感激,如果你给我一个链接。

+0

为什么要存储“速度”和“方向”?存储velocity_x和velocity_y要容易得多。 –

+0

听起来不错。但是,我不得不增加某种力量来计算速度,对吧? – Emil

+2

埃米尔,你最后的评论根本没有意义。根据你如何定义方向,下一个位置将会是'x = x + vel * cos(dir)* deltat; Y = Y + VEL * SIN(DIR)* deltat'。但是使用vel_x和vel_y更容易。 – Beta

回答

4

考虑速度和方向的下一个位置是什么?

请注意,速度已经有方向;它是一个矢量

考虑到这一点,你的新职位是:

position = CGPointMake(position.x + velocity.x, position.y + velocity.y) 

制作速度的CGPoint,让你的方向变化是多余的。

+0

听起来不错。但是,我不得不增加某种力量来计算速度,对吧? – Emil

+0

这取决于你如何_want_你的程序工作。如果速度不变,你不需要任何力量 –

+0

好吧,我明白了。但我不明白这将如何帮助我的弹跳球。假设球从立式矩形的中心底部开始,并且以“西北方向”开始并且将每帧移动1个单位长度。速度将是x = -1,y = 1。对吗?如果“东”是0,则角度为135度。当球击中左侧墙时,那么是什么?我想反射入射角并让下一个速度为x = 1,y = 1。但是我怎样才能得到这些数字没有某种角度/方向/旋转?也许我只是困惑... – Emil

0

将方向和速度转换为矢量,按比例缩放时间,然后将其添加到当前位置,以考虑沿路径遇到的障碍物。