2012-01-05 84 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

可以使用入射矢量和牆法線之間的點積來找到角度,然後取反餘弦(首先對矢量進行歸一化)。