0

这是我的球与墙壁的碰撞代码 - 在 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]
4

1 回答 1

0

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

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

基本上,只需应用勾股定理来查看它们的中心之间的距离是否比它们的半径之和更近。

于 2015-02-03T22:46:48.363 回答