在pygame中让乒乓球正确反弹

2 投票
1 回答
1097 浏览
提问于 2025-04-18 10:34

我的代码有时候能正常工作,但大多数时候球似乎就随心所欲。我给球类设置了一个角度,这样它在碰到屏幕的顶部和底部以及玩家的挡板时会改变方向,但有时候球似乎不管这些逻辑和“如果”语句。我相信我只是漏掉了一些简单的东西,但任何帮助都会很感激。

注意:“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

在处理这种球体碰撞的问题时,我遇到了很多麻烦。

我找到的最简单的解决办法是:

- 先让球在X轴上移动

- 检查是否发生了碰撞,如果发生了,就修正它并做出反应(大多数情况下是反向移动X方向)

- 然后在Y轴上做同样的事情。

以前我对此感到非常头疼。现在我分别更新和检查每个轴的碰撞,效果很好。

撰写回答