0

我正在制作一个乒乓克隆来练习我的编码,并且我一直坚持让球在被球拍击中时能够改变角度。

我当前的实现有一个球的 deltaX 和 deltaY,它们随着游戏循环移动以移动球。我这样做的方式是,如果您在球拍移动时击球,deltaY 会根据球拍的方向增加或减少,但这对于游戏来说一点也不自然。

有谁知道这样做的更好方法?

4

1 回答 1

2

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

但是,您必须更新绘制球的函数,使其从极坐标回到直角坐标,以便您可以在屏幕上显示它。一点高中三角学可以让你根据你的角度和速度计算屏幕位置增量:

newPosition = oldPosition + movementVector

和:

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

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

现在要在每次与球拍碰撞时修改球的角度,您只需要根据球拍接触球拍的哪个部分来增加或减少球的角度,并且绘图函数中的数学应该负责更新 x 和 y现实的立场。

我希望这有帮助。

于 2012-07-30T11:32:20.573 回答