我的代码似乎在某些时候有效,但大多数时候球似乎只是按照自己的意愿行事。我为球类分配了一个角度,它改变了对屏幕顶部和底部以及球员拨片的影响,但有时球似乎忽略了逻辑和'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
答案 0 :(得分:0)
在进行这些类型的球/弹跳碰撞时,我遇到了很多麻烦。
我找到的最简单的解决方案是:
- 在X轴上移动球
- 检查碰撞,如果发生碰撞,修复它并对其作出反应(在大多数情况下反向x方向)
- 在Y轴上做同样的事。
我曾经把头发拉过来。现在我单独更新/碰撞检查轴。效果很好。