2011-03-20 62 views
1

可以说我有一个角度...什么是寻找球的下一个点的合理方式?对于乒乓球游戏的数学

变量:bSpeed,手镯,Ball.x,Ball.y

你knwon当你做C^2 = A^2 + B^2 ... ...有你可以找到多久℃的方式^ 2可能并且实际上“画”出来,然后用速度去只有一部分......找到一个^ 2和b^2,所以你实际上可以有斧头和ay来画球......

提前致谢! (顺便说一句,我不需要代码...只是推理和智慧)

回答

2

你的4个变量实际上是一个矢量 - 矢量是方向和大小/速度的量度(也就是你代表的bSpeed和bAngle)。使用这种表示意味着Ball.x和Ball.y只是成为向量的水平和垂直分量。

给定一个称为v1的向量,我们可以计算x和y轴的运动如下...

xVelocityOfBall = v1.magnitude * cos(v1.angle); 
yVelocityOfBall = v1.magnitude * sin(v1.angle); 

GPWiki(游戏编程维基)是一个伟大的资源,用于任何数学/物理游戏开发。这里有一个方便的链接vector page

2
delta_x = speed*cos(angle) 
delta_y = speed*sin(angle) 
new_x = x+delta_x 
new_y = y+delta_y 

,然后你只需要改变速度和球的角度在墙上撞击的情况下)

0

打开你的教科书因为你使用bAngle,所以你可以在Sin,Cos和Tan上找到它。具体来说,你可能会看到垂直运动的Sin和水平运动的Cos。取决于您定义度0的位置。

此外,您可以考虑缓存的水平和垂直速度,因为正弦和余弦昂贵

0

你可能需要考虑的是,乒乓球运动员也正在运动的物理过程。例如,如果一名球员的桨在与球接触时向左快速移动,球就需要加速到左边的方向。这代表了物理学势头的转移。在x和y方向方程的一般系统将始终是:

  1. 质量*速度(以x)= x中的所有对象
  2. 质量*速度的质量*速度的总和(在y中)=所有物体的质量*速度的总和y中

一般来说正弦你总是在X球的速度和y所有你需要做的是确定球和两个群众桨(我想这取决于你,但我建议让他们一样易于计算)。

就解决角度而言,它非常简单,您只需确保反射相等即可。如果球从60度事件接近桨(或墙),则反弹也应该在60度事件中。

0

首先,使用sincos函数将角度转换为矢量。这告诉你球的相对X速度和Y速度。然后,为了找出球实际走多远,将这些数乘以球的速度和飞行时间。最后,加入球的起始位置。这给了你球的结局位置。

在乒乓球游戏中,球可能撞到一个物体,在这种情况下,您需要纠正速度变化。