2012-09-01 60 views
1

我有一個動畫(請參閱下面的視頻鏈接),這是我正在開發的應用程序的一部分。我基本上有魚在屏幕上游泳。目前,我有大約20條魚,每條魚最初放置在另一條魚後面,然後按順序在屏幕上「游泳」。我的問題是,這不是我想要的行爲。這只是一個臨時解決方法。我需要發生的是,每條魚達到一定的閾值後(比如比帆布寬度的最後1/5更小),從陣列中選擇另一條魚隨機挑選,定位,然後游泳。如何在主遊戲循環中「隨機化」動畫

這應該重複該活動的整個生命。我試着在每條魚達到那個點後產生一個隨機數,然後用它來定位魚的指數,然後將其漂浮,但是一個明顯的問題是,如果選擇的隨機數對應於魚的指數已經在畫布上了..它會消失(因此它可以重新定位,等等)。除了這個問題,從我對遊戲開發的理解。到目前爲止(我仍然是一個初學者)。主遊戲循環內的隨機數生成應該不惜一切代價來避免。但我不確定有什麼其他方式可以解決這個問題。希望從更有經驗的開發者那裏獲得一些洞察。多謝你們。下面是在YouTube視頻我張貼了這個問題

https://www.youtube.com/watch?v=QM6t6f9TaUQ&feature=youtube_gdata_player

TL的鏈接; DR - 我想了一堆魚的跨越以隨機順序尖叫游泳,有這個過程重複,直到用戶退出活動/應用程序。

回答

1

如果在應用程序的整個生命週期中魚的間距保持不變,只需在應用程序啓動時生成隨機的魚間偏移即可。第一名首先進入......當它到達隨機偏移#1時,進入第二條魚。當#2魚到達隨機偏移#2時,#3魚進入,等等。當一條魚離開屏幕的另一邊時,它會回到隊列中並等待進入。

1

你並沒有在遊戲循環的每一幀都這樣做,所以任何表現都是微不足道的。

至於如何做到這一點: 我會說,做一個List<Integer>並填充你有魚的索引。

當一條魚放在屏幕上時,它從列表中選擇remove

當要選擇一條新魚時,從0到列表長度中隨機選擇。

當新魚在屏幕上游動時,add重新回到列表中。

+0

我究竟在哪裏生成隨機int?我正在檢查我的遊戲循環中每條魚的x位置。每當我嘗試隨機選擇某個點時,就會清楚地看到這個問題 –

+0

我真的沒有看到問題呢?一旦魚傳遞了某個x值,就調用一個'SpawnFish'函數,它執行上面的邏輯。這將保持恆定的魚量。如果你想讓它看起來更自然,那麼你可以隨機產生魚,只有當它們傳遞一些x值時纔去除它們。 –

+0

對,我明白你在說什麼。這也是我如何在邏輯上把它放在這裏的原因。但是讓我們說,當Fish.x小於畫布寬度的一半時,我的spawnFish()負責從索引列表中選擇一個隨機索引。我得到奇怪的行爲,因爲每條魚都快速變色。我知道這是因爲隨機數。代碼循環內,但我不知道如何解決這個 –