Обнаружено столкновение Pygame - PullRequest
1 голос
/ 07 июня 2019

Я пишу свою первую игру в 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 Ответ

1 голос
/ 07 июня 2019

Вы должны выполнить проверку столкновений в основном цикле, а не в цикле событий.Цикл событий выполняется только при возникновении события, поэтому «только иногда работает» .Основной цикл выполняется непрерывно.

например

# 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() 
...