在pygame中,球不会弹离屏幕

2024-07-01 08:03:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个乒乓球游戏,游戏中有一个球拍。球应该从墙上和桨上弹起。但是球只有有时会从墙上反弹。以下是使球反弹的代码:

    elif ball_x == 785:
        dbx = -dbx
    elif ball_y == 585:
        dby = -dby
    elif ball_y == 15:
        dby = -dby
    elif ball_x == 60 and ball_y > rect1_y - 110 and ball_y < rect1_y + 110:
        dbx = -dbx

我该如何解决这个问题


Tags: and代码游戏elif乒乓球balldbx球拍
2条回答

与其检查ball_x == 785,不如检查ball_x >= 785。如前所述,代码仅在球的x坐标正好为785时使球反弹。如果你的球每帧移动超过一个像素(很可能是这样),那么大部分时间它会“跳”到785线上而不会反弹

当球碰到窗口的左侧或右侧时,必须反转dbx。当球触顶或触底时,你必须反转。
但是,如果球的速度的轴对齐分量不是精确的1,那么球就不会精确地接触到边界。您必须计算坐标是否为<=>=,而不是==

我的建议是:

radius = 15
width, height = 800, 600

if ball_x <= radius or ball_x >= width-radius:
    dbx = -dbx
if ball_y <= radius or ball_y >= height-radius:
    dby = -dby

相关问题 更多 >

    热门问题