Python 乒乓球比赛-球拍碰撞?

Python 乒乓球比赛-球拍碰撞?,python,pong,codeskulptor,Python,Pong,Codeskulptor,这是我用python(Codeskulptor)创建的带墙球的碰撞代码 球从底壁和顶壁反弹,如果没有被球拍击中,球会从左侧和右侧消失,并重新出现在中心重复 但是,我无法让球击中挡板并反弹-挡板是放置在屏幕左侧的圆形物体(高度/2) 任何帮助都将不胜感激 #Bottom and top walls if Ballpos[1] >= (Height - Ballradius): Ballvel[1] = - Ballvel[1] if Ballpos[1] <= (Ballrad

这是我用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]
#底墙和顶墙
如果Ballpos[1]>=(高度-球半径):
Ballvel[1]=-Ballvel[1]

如果Ballpos[1]让我们假设你的桨有坐标
Padpos
和半径
Padradius
。根据你的代码,看起来坐标代表圆心,但是如果我错了,你可以做必要的调整

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

if(Ballpos[0]-Padpos[0])**2+(Ballpos[1]-Padpos[1])**2 FWIW,
math
模块有一个函数,可以非常快速地计算欧几里德距离(毕达哥拉斯度量的另一个名称),并且可以用来加速和简化您的答案,因为您只需要将结果与
Ballradius+Padradius
进行比较。