Pygame碰撞检测漏洞

时间:2019-06-07 20:18:15

标签: python pygame collision-detection

我正在编写第一个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功能,但有时只能工作。

1 个答案:

答案 0 :(得分: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()