2014-04-14 26 views
0

我有在Pygame的例如添加碰撞aliens.py添加在Aliens.py碰撞在Pygame的

我想添加一個碰撞檢測,使外星人不明飛行物炸燬,當他們碰撞問題彼此。

下面是在程序中的碰撞代碼:

# Detect collisions 
     for alien in pygame.sprite.spritecollide(player, aliens, 1): 
      boom_sound.play() 
      Explosion(alien) 
      Explosion(player) 
      SCORE = SCORE + 1 
      player.kill() 

     for alien in pygame.sprite.groupcollide(shots, aliens, 1, 1).keys(): 
      boom_sound.play() 
      Explosion(alien) 
      SCORE = SCORE + 1 

     for bomb in pygame.sprite.spritecollide(player, bombs, 1): 
      boom_sound.play() 
      Explosion(player) 
      Explosion(bomb) 
      player.kill() 

     #for alien in pygame.sprite.spritecollide(aliens): 
      #boom_sound.play() 
      #Explosion(alien) 

最後一個for循環是我創建的一個。我顯然需要3個參數,但我不確定需要其他參數。請幫忙!

+0

你是不是說你想檢測外星不明飛行物之間的碰撞?如果他們碰撞,他們應該炸燬? – Raiyan

+0

是的,所以如果兩個不明飛行物彼此接觸,他們應該炸燬 – Shrek

+0

我已經添加了一個片段來顯示如何做到這一點碰撞檢測,看到我的答案。我也編輯了一下你的問題,以表明你想要檢測兩個不明飛行物之間的碰撞。 – Raiyan

回答

1

從pygame.sprite(http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.spritecollide)實際上有4個參數的手冊頁,它們是:

  1. 精靈:要檢查碰撞此
  2. 組:覈對這些
  3. 碰撞
  4. dokill:表示在檢測到碰撞時殺死或不殺死的動作
  5. 碰撞(可選):用於檢測碰撞的回調函數

我猜你想檢測兩個外星人不明飛行物之間的碰撞。你需要像這樣的東西:

for a in aliens : 
    for alien in pygame.sprite.spritecollide(a, aliens, 1): 
     boom_sound.play() 
     Explosion(alien) 
+0

當我得到錯誤,它說我需要3,但我並不反對你。嗯,生病檢查出來,謝謝! – Shrek

+0

所以當我添加snip的時候,外星人在產卵時會立即爆發。這是爲什麼發生? – Shrek

+0

我需要看到產生外星人的代碼,以確定爲什麼。我的猜測是,他們正在同一地點產卵。 – Raiyan