让乒乓球在pygame中正确反弹

时间:2014-06-20 22:56:11

标签: python pygame pong

我的代码似乎在某些时候有效,但大多数时候球似乎只是按照自己的意愿行事。我为球类分配了一个角度,它改变了对屏幕顶部和底部以及球员拨片的影响,但有时球似乎忽略了逻辑和'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

1 个答案:

答案 0 :(得分:0)

在进行这些类型的球/弹跳碰撞时,我遇到了很多麻烦。

我找到的最简单的解决方案是:

- 在X轴上移动球

- 检查碰撞,如果发生碰撞,修复它并对其作出反应(在大多数情况下反向x方向)

- 在Y轴上做同样的事。

我曾经把头发拉过来。现在我单独更新/碰撞检查轴。效果很好。