这是我与墙壁的碰撞代码 - 用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]
答案 0 :(得分:0)
让我们假装您的球拍有坐标Padpos
和半径Padradius
。从您的代码看,坐标看起来像圆圈的中心,但如果我错了,您可以进行必要的调整。
if (Ballpos[0] - Padpos[0])**2 + (Ballpos[1] - Padpos[1])**2 <= (Ballradius + Padradius)**2:
# code for rebounding
基本上,只需应用毕达哥拉斯定理,看它们的中心之间的距离是否比它们的半径之和更接近。