我的代码似乎在某些时候起作用,但大多数时候球似乎只是做它想做的事情。我给球类指定了一个角度,它可以随着屏幕的顶部和底部以及球员的划桨向上改变冲击力,但有时球似乎忽略了逻辑和“if”语句。我确信我只是错过了一些简单的东西,但是任何帮助都是值得的。
注:“T掼RECT”和“B掼RECT”分别代表屏幕的顶部和底部。

 if (gameBall.rect.colliderect(T_RECT) or gameBall.rect.colliderect(B_RECT)) and bounce == 0:
        gameBall.angle = 545 - gameBall.angle
        bounce = 1
    if (gameBall.rect.colliderect(redPlayer.rect) or gameBall.rect.colliderect(bluePlayer.rect)) and bounce == 0:
        gameBall.angle =  365 - gameBall.angle
    else: bounce = 0

最佳答案

当进行这种类型的球/弹跳碰撞时,我遇到了很多麻烦。
我找到的最简单的解决方案是:
在X轴上移动球
-检查是否有碰撞,如果发生了碰撞,修复它并对其作出反应(在大多数情况下,反向x方向)
-在Y轴上做同样的操作。
我以前经常把头发拉出来。现在我分别更新/碰撞检查轴。效果很好。

10-04 22:22