Pong游戏中的三角学和碰撞/反射

时间:2012-01-05 00:13:49

标签: reflection pygame trigonometry collision pong

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

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

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

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

2 个答案:

答案 0 :(得分:1)

您需要查看Angle of Incidence

enter image description here

基本上你会想要在你的传入矢量和球击中的墙壁的法线之间找到角度 theta 。在入射角度为(墙壁法线) - theta 的情况下,得到的角度为(墙壁法线)+ theta

可以使用输入矢量和墙法线之间的点积找到角度,然后取反余弦(首先标准化矢量)。

答案 1 :(得分:0)

您应该使用:

math.pi - angle