0

为了好玩,我正在使用 Pygame 在 Python 中制作 Pong。我在反射方面遇到了一些麻烦。

所以球有一个与之相关的角度。由于正 y 向下,因此该角度向下。如果球击中顶部或底部墙壁,我可以简单地否定角度,它会正确反射,但问题在于左右墙壁。在这种情况下,我无法弄清楚如何改变角度的三角函数。我目前正在尝试以下代码段的组合,但没有运气。

 self.angle = -(self.angle - math.pi/2)

我附上了代码。您可以轻松地自己尝试一下。请记住取出我尚未包含或使用的“帧速率”模块。我会很感激任何意见。谢谢!

4

2 回答 2

1

您将需要研究Angle of Incidence

在此处输入图像描述

基本上,您需要找到传入矢量与球击中墙壁的法线之间的角度theta 。入射角为 (壁法线)- theta的角度为 (壁法线)+ theta

可以使用传入向量和墙壁法线之间的点积来找到角度,然后取反余弦(首先对向量进行归一化)。

于 2012-01-05T00:32:39.163 回答
0

你应该使用:

math.pi - angle
于 2012-01-05T00:24:18.117 回答