【问题标题】:Pygame Collision Detection BuggedPygame 碰撞检测漏洞
【发布时间】:2019-06-07 20:18:15
【问题描述】:

我正在编写我的第一个 Pygame 游戏。我正在尝试进行碰撞检测,但有时会起作用-

我尝试使用pygame.sprite.groupcollide,实际上我使用pygame.sprite.collide_rect

这是我的碰撞代码:

for event in pygame.event.get():
    collision = pygame.sprite.collide_rect(Dog, spikeUp0) or pygame.sprite.collide_rect(Dog, spikeUp1) or pygame.sprite.collide_rect(Dog, spikeDown0) or pygame.sprite.collide_rect(Dog, spikeDown1)
    if collision:
        Game = False
        gameOver()

除了当我触摸尖峰时,我会启动gameOver 功能,但只是有时有效。

【问题讨论】:

    标签: python pygame collision-detection


    【解决方案1】:

    您必须在主循环而不是事件循环中进行碰撞测试。事件循环仅在事件发生时执行,这导致它“仅有时有效”。主循环连续执行。

    例如

    # main application loop 
    while run:
    
        # event loop
        for event in pygame.event.get():
    
            # [...] event handling    
    
    
        # collison test
        collision = pygame.sprite.collide_rect(Dog, spikeUp0) or pygame.sprite.collide_rect(Dog, spikeUp1) or pygame.sprite.collide_rect(Dog, spikeDown0) or pygame.sprite.collide_rect(Dog, spikeDown1)
        if collision:
            Game = False
            gameOver() 
    

    【讨论】:

    • @ArnauBG 当然“这个”问题已经解决了,那么你的代码中还有另一个与这个问题无关的错误。这是什么意思“但下降尖峰只有一部分有效。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多