2013-05-22 98 views
1

好吧我正在用pygame製作2D滾輪遊戲,但想要能夠控制何時考慮碰撞。例如,在我的玩家碰撞並死亡後,他在屏幕中間立即重生,問題在於通常會有另一個碰撞物體靠近,從而立即殺死玩家。我想要的是一個小時間段,玩家可以在這段時間內避免碰撞,讓它先移動到安全位置,然後繼續玩正常的廣告。我想也許把重新安置在一個虛擬精靈組中,然後隨着時間的推移將它移除並添加到另一個有碰撞的組中。我不知道。Pygame:如何忽略碰撞

回答

0

當玩家死亡時,我會設置一個變量,其中包含您希望它無法忍受的幀數。當你進行碰撞檢測時,你可以檢查玩家是否有任何遺漏的幀,只有在沒有剩餘幀的情況下才處理碰撞。

def kill_player(player): 
    # handle moving the player after death, anything else you need to do 
    # set player invulnerability to 30 frames 
    player_invulnerable_frames = 30 

if environment_rect.collides(player_rect) and player_invulnerable_frames = 0: 
    # perform collision response stuff here 

在你的遊戲循環,也許更新功能,可以減少刀槍不入的幀數,如果它是目前大於零

while(running): 
    # your game loop stuff 
    if player_invulnerable_frames > 0: 
     player_invulnerable_frames -= 1 
+0

感謝哈茲, 的邏輯工作。我把所有的東西都放在我的main()中,因爲它只是一個單獨的玩家,我所有的碰撞都在main中。我試圖去處理它,所以每個玩家都有自己的無敵價值,但當我從main()函數中查看玩家在一個spriteGroup中時,看到它的值是什麼時,我無法讓它工作。 無論如何,謝謝你的工作! – Aikman007

+0

優秀!如果解決方案爲您工作,您是否可以將答案標記爲已接受? – Haz