トップページ > 過去ログ > 記事閲覧
複数のキャラクターを同時に動かす
名前:ななしさん 日時: 2008/01/03 20:28

現在作成中のゲームで 複数のキャラクターを同時に動かす処理が必要なのですが 現在の方法だと処理数が増えた際に重くなってしまうようで 一般的にはどのような方法が 使用されているのかご教授ねがいたいです。 // 処理するキャラクターのカウント int i =0; GAME_MAIN_LOOP() {   i++;   if( i > PLAYER_MAX ) i = 0;   if( player[i].Move == 1 ) PlayerMove(); } player[i].Moveが1だったならば そのキャラクターの移動処理。 もしそうでなければ、 iの値を増やしていく

Page: 1 |

Re: 複数のキャラクターを同時に動かす ( No.1 )
名前:ななしさん 日時:2008/01/03 20:29

ちなみに移動には このサイトのサンプルプログラム 「スクロールを滑らかに行う」を使用しています
Re: 複数のキャラクターを同時に動かす ( No.2 )
名前:TNT 日時:2008/01/03 22:55

まず、メインループの使い方がちょっと変なようです。 ゲームにおけるメインループは、通常1回のループが描画1回に対応します。 つまり60fpsのゲームであれば、メインループは1秒に60回回ることを前提として組んでいきます。 そして、各処理はメインループ内で1フレームに1回行われるようにします。 例えば、画面内にキャラクタがn個(0〜n-1)あるとします。 概念的には int i; while(true){ for(i=0 ; i<n ; i++) Move(i); for(i=0 ; i<n ; i++) Draw(i); ScreenFlip(); } といった具合になります。ただし、それぞれのキャラクタが実際に移動するかどうかは、 Move関数の先で判定させます。 (移動パターンなどは属性などを設定して分岐させる) (後半部分、蛇足っぽかったので消しました。  細かい部分に関しては、クラスを上手く利用することを考えると良いと思います)
Re: 複数のキャラクターを同時に動かす ( No.3 )
名前:ななしさん 日時:2008/01/04 01:10

ありがとうございます。 なるほど・・・その方法にて実行したところ 快適に動作しておどろきました(笑 おかげさまで今後のゲーム開発も スムーズにいけそうです。 ありがとうございました。

Page: 1 |