2017-04-19 70 views
1

我在Unity中創建了一個舞臺風格的戰鬥遊戲,我遇到了重生玩家的問題。以下是它現在的工作原理。在Unity中同時重生2個玩家對象

當一個玩家被殺死時,它會被放入一個被殺死的玩家列表中被重生,並且玩家對象被銷燬。遊戲然後通過殺死玩家的列表循環,並選擇一個隨機可用的重生點,然後重新玩家在那裏。一個可用的重生點是任何一個沒有被玩家所在的重生區域觸發的重生點。

問題出現在2名玩家同時死亡或者至少非常接近同一時間,並且隨機選擇的重生點結束時相同,因爲它沒有足夠的時間來處理觸發。當發生這種情況時,所有的統一崩潰,我必須完全重新啓動它。

我認爲爲了解決這個問題,我需要讓Unity不要同時產生它們,但我認爲這將通過循環列表來解決。我應該怎麼去產生2個同時更安全地死亡的玩家呢?

回答

0

我想通了,我的問題,我能與隨機刷新點守。這個問題顯然不是與2名球員同時死亡,而是與一名球員在一個人員死亡時死亡相關的。發生這種情況時,它不會運行OnTriggerLeave()方法,因此即使沒有任何內容,也不會將其視爲可用的生成點。

我通過讓每個spawnpoint擁有一個所有觸發它的遊戲對象的列表來修正它,這些對象會隨着玩家進入和退出空間而改變。然後,當一名玩家被殺時,它會檢查每個後備人員的列表,看看它是否包含玩家的遊戲對象。如果它找到了一個匹配,那麼我就不觸發這個生成點並且它顯示爲可用。

對此我想要做的更好的方法是檢查列表以查看列表的列表中是否有任何gameobjects,並且只有在沒有列表時纔可用。因爲目前的方式沒有考慮到其他物體也觸發了這一點。

0

這是經典的隊列示例,同樣的事情發生在多線程應用程序中。有兩件事情,你可以在這裏做:關注

    1. 引水刪除衝突從開始

    在第一種方法,你在舞臺上您的播放器腳本之外創建一個腳本,例如它的自我並在那裏創建一個方法來選擇下一個產卵點。這可以是順序而不是隨機的,每個死亡的玩家都要求腳本選擇下一個產卵點,並且在一點上不會發生衝突。

    在第二種方法中,每個玩家將擁有它自己的產卵點,例如與競技場中定義的產卵點的偏移。例如,玩家1的偏移量爲零,在產卵點右側產卵,則玩家2的偏移量爲1,從產卵點產卵1個單位。

    如果玩家人數有限,我更喜歡第一種方法。如果你有很多球員,那麼隊列可能會很麻煩。

    希望它能幫助:)

  • 相關問題