乒乓球比赛 - 球与桨碰撞?

时间:2015-02-03 22:33:09

标签: python pong codeskulptor

这是我与墙壁的碰撞代码 - 用python创建(Codeskulptor)

球从底部和顶部墙壁反弹,如果它没有被桨叶击中并从中心重新出现重复,则从左侧和右侧消失

然而,我无法让球击中球拍并反弹 - 球拍是放置在屏幕左侧的圆形物体(高度/ 2)

任何帮助将不胜感激

#Bottom and top walls
if Ballpos[1] >= (Height - Ballradius):
    Ballvel[1] = - Ballvel[1]
if Ballpos[1] <= (Ballradius):
    Ballvel[1] = - Ballvel[1]

if(Ballpos[0] <= 0):
    Score2 += 1
    Ball_Spawn(True)
elif(Ballpos[0] >= Width):
    Score1 += 1
    Ball_Spawn(False) 


#Update Position of Ball
Ballpos[0] += Ballvel[0]
Ballpos[1] += Ballvel[1]

1 个答案:

答案 0 :(得分:0)

让我们假装您的球拍有坐标Padpos和半径Padradius。从您的代码看,坐标看起来像圆圈的中心,但如果我错了,您可以进行必要的调整。

if (Ballpos[0] - Padpos[0])**2 + (Ballpos[1] - Padpos[1])**2 <= (Ballradius + Padradius)**2:
    # code for rebounding

基本上,只需应用毕达哥拉斯定理,看它们的中心之间的距离是否比它们的半径之和更接近。