【问题标题】:How do I detect if a rect is touching the edge in pygame?如何检测 rect 是否触及 pygame 中的边缘?
【发布时间】:2021-12-04 14:12:11
【问题描述】:

我正在尝试编写一个太空侵略者风格的游戏,其想法是弹出气球。当它接触边缘时,它只会在大约半分米(1.5 英寸)之间来回移动。我试图做的是一个 if elif 语句来查找它是否在屏幕内。

while run == True:
    clock.tick(60)
    for event in py.event.get():
        if event.type == py.QUIT:
            py.quit()
            quit()
    keys = py.key.get_pressed()
    charrect.x += (keys[py.K_RIGHT] - keys[py.K_LEFT]) * 4
    charrect.clamp_ip(screen.get_rect())
    if keys[py.K_SPACE]:
        while charrect.y != 0:
            clock.tick(60)
            charrect.y -= 2
            brect.x += bloonspeed
            brect.clamp_ip(screen.get_rect())
            screen.fill(white)
            screen.blit(character, charrect)
            screen.blit(bloon, brect)
            py.display.update()
    if brect.x == 70:
        bloonspeed = -4
    elif brect.x == 0:
        bloonspeed = 4
    brect.x += bloonspeed
    
    screen.fill(white)
    screen.blit(bloon, brect)
    screen.blit(character, charrect)
    py.display.update()

有没有办法在 if 语句中使用clamp 或clamp_ip 来检测它们的碰撞?

【问题讨论】:

    标签: python pygame collision


    【解决方案1】:

    有没有办法在 if 语句中使用clamp 或clamp_ip 来检测它们的碰撞?

    使用pygame.Rect.contains 测试一个矩形是否在另一个矩形内:

    contains(Rect) -> bool
    

    当参数完全在 Rect 内时返回 true。

    例如:

    if not screen.get_rect().contains(brect):
        # do something
    

    【讨论】:

    • 谢谢,但如果矩形触摸屏幕的某一侧,我会尝试布尔值,以便我可以让气球在边缘之间反弹。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多