需要更好的方法在乒乓球比赛中制作球角

时间:2012-07-30 11:10:57

标签: java pong

我正在制作一个pong克隆来练习我的编码,而且当你被球拍击中时我仍然坚持让球能够改变角度。

我目前的实现有一个球的deltaX和deltaY,它随着游戏循环移动以移动球。我这样做的方法是,如果你在球拍移动时击球,deltaY会根据球拍的方向增加或减少,但这对比赛来说根本不自然。

有谁知道更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我要做的第一件事是将deltaX和deltaY更改为ballAngle和deltaSpeed。这样你就可以从直角坐标系转向极坐标系。由于球的运动性质(直线运动并在每次冲击时改变线的角度),这将使您的工作更容易。从现在开始,你只需要改变ballAngle来更新球的方向。

但是你必须更新绘制球的功能,以便它从极坐标移回到直角坐标,这样你就可以在屏幕上显示它。一些高中三角学将让您根据角度和速度计算屏幕位置增量:

newPosition = oldPosition + movementVector

使用:

movementVector.x = deltaSpeed*cos(ballAngle)
movementVector.y = deltaSpeed*sin(ballAngle)

当然,这些方程式可能需要根据您测量球的角度进行一些修改。

现在要在每次与桨叶碰撞时修改球的角度,你只需要增加或减少球的角度,这取决于它接触的桨的哪个部分,并且绘图功能中的数学应该注意更新x和y的位置是现实的。

我希望这会有所帮助。