2012-01-05 85 views
0

为了娱乐,我使用Pygame在Python中进行了Pong。反思中遇到了一些麻烦。Pong游戏中的三角和碰撞/反射

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

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

我附上了代码。你可以轻松地为自己尝试。只记得拿出我还没有包含或使用过的“framerate”模块。我将不胜感激任何意见。谢谢!

+0

代码在这里:http://dl.dropbox.com/u/7264839/code/pong.py – ballaw 2012-01-05 00:14:55

回答

0

你应该使用:

math.pi - angle 
1

你会想看看Angle of Incidence

enter image description here

基本上你要找到你的来电矢量和正常球击中墙壁之间的角度THETA。当入射角是(壁法线)时,得到的角度是(壁法线)+ theta

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