1

作業中のアプリの一部であるアニメーション(以下のビデオリンクを参照)があります。私は基本的に画面を横切って魚を泳いでいます。現在、私は約20匹の魚の配列を持っており、それぞれが最初に前後に配置され、次に画面上を順番に「泳ぎ」ます。私の問題は、これは私が望む振る舞いではないということです。これは一時的な回避策です。代わりに私が行う必要があるのは、各魚が特定のしきい値(たとえば、キャンバス幅の最後の1/5未満)に達した後、配列から別の魚がランダムに選択され、配置されてから、泳いで渡ることです。

これは、アクティビティの全期間にわたって繰り返される必要があります。各魚がそのポイントに到達したら乱数を生成し、それを使用して魚をそのインデックスに配置し、それを横切って浮かせようとしましたが、選択された乱数が魚のインデックスに対応するかどうかという明らかな問題があります。はすでにキャンバス上にあります。それは消えます(再配置できるようにするためなど)。その問題は別として、ゲーム開発者の私の理解から。これまでのところ(私はまだ非常に初心者です)。メインゲームループ内での乱数の生成は、絶対に避けてください。しかし、私はこれについて他の方法がわからないだけです。より経験豊富な開発者からアプローチに関する洞察を得ることを望んでいます。みんなありがとう。この質問のために投稿したYouTubeビデオへのリンクは次のとおりです

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

TL; DR-たくさんの魚が悲鳴をランダムな順序で横切って泳ぎ、ユーザーがアクティビティ/アプリを終了するまでこのプロセスを繰り返してもらいたい。

4

2 に答える 2

1

アプリの存続期間中、魚の間隔が一定のままであれば問題ない場合は、アプリケーションの起動時にランダムな魚間のオフセットを生成するだけです。最初に泳ぎます...ランダムオフセット#1に達すると、魚#2が入ります。魚#2がランダムオフセット#2に達すると、魚#3が入ります。魚が画面の反対側を離れると、魚はキューに戻り、入るのを待ちます。

于 2012-09-01T05:38:46.983 に答える
1

ゲーム ループのすべてのフレームで実行しているわけではないため、パフォーマンスは重要ではありません。

それを行う方法については、 をList<Integer>作成し、持っている魚のインデックスを入力します。

魚が画面に配置されるとremove、リストからそれが表示されます。

新しい魚を選択する場合は、0 からリストの長さまでランダムに選択します。

新しい魚が画面から泳ぎ出すaddと、リストに戻ります。

于 2012-09-01T06:10:27.430 に答える