2015-03-30 24 views
0

我在Unity上工作了一個月。在Unity和其他遊戲引擎之前,我是Unity和C#的新手。無論我在無限運行遊戲中工作,我都會寫隨機道路生成器。道路發電機運行良好,但我有更新道路的問題。我可以像這樣更新道路手冊。我如何自動更新它?無限路更新

void Update() 
{ 
    if(Input.GetKeyDown(KeyCode.A)) UpdateRoad(); 
} 

我的UpdateRoad方法添加像這樣的道路(我正在使用對象池)。 我想更新鏈接道路,OnExitTrigger或我不知道的東西。我該怎麼做?

enter image description here

+0

這是2D還是3D? – Aizen 2015-03-30 22:14:08

+0

3D我正在使用z位置 – 2015-03-30 22:14:43

+0

我對統一性一無所知,但它聽起來像是一個很好的事件訂閱候選人。如果在用戶出行時觸發了某些事件,則可以在那裏調用UpdateRoad()(可能基於其他一些狀態變量)。 – 2015-03-30 22:31:35

回答

1

您需要實現對象池。

我會建議先讓你的對象設計,讓你可以測試。或者,如果不使用,Unity3D的庫存塊原始庫爲您的預製件。我希望你已經知道預製件。這是製造無限跑步者的關鍵。其實是製作任何類型遊戲的主要核心。

預製是一個對象文件,你可以在一個位置實例化它。因此,讓我們說你會生成一個平坦的步行,然後生成一個坑。你可能想將它們堆疊在一起。

現在生成它們很容易。你不想進入更新?方法,因爲很可能你不會更新,但你會根據你的遊戲邏輯進一步堆疊未來。

爲了進一步理解這一點,Unity3D已經制作了一個項目或全面詳細的教程。它可能是二維製造的,但它將會是一樣的,如果你要把Collider2D改成碰撞器< - 這對你的情況很重要。

https://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/infinite-runner

更新

您將需要創建一個對象,那是看不見的。意味着觸發器。 然後在觸發器上調用你的方法UpdateRoad();

https://unity3d.com/learn/tutorials/modules/beginner/physics/colliders-as-triggers

有關觸發的詳細視頻。

+0

我已經使用了對象池。我的代碼運行良好,但我如何更新道路?我認爲與OnTriggerExit,但我不知道這是最好的方式? – 2015-03-30 23:13:10

+0

對於我來回答你的問題。你想在道路上更新什麼?它是組件還是替換對象本身?如果組件。你想更新哪些特定的組件,以便我可以添加它。 – Aizen 2015-03-30 23:16:46

+0

我想當玩家通過LinkRoad預製(您可以在我的文章中看到圖片)UpdateRoad方法應該可以工作一次。例如,如果(player.position.z> linkprefab.position.z)UpdateRoad(); – 2015-03-30 23:31:51