- 548 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 21:06:12 ID:eG4vVrw2]
- 一般には待ち行列とかキューとか言われる構造を使うと思う。
1. 主人公とすべての敵のインスタンスIDをキューに入れる 2. キューからインスタンスを一つ取り出し、そのインスタンスに行動させる 3. 行動が終わったら2に戻る。キューが空になっていたら1に戻って最初から 具体的にどう実装するかだけど、まずコントローラオブジェクトを一つ用意して 次のように処理させる。 (ds_queue使ってもいいけど、レジストしてないかもしれないので配列で実装してみた) ・Createイベントで以下の変数を用意 global.current_id = noone; // 現在行動しているインスタンスのID(nooneなら誰もいない) queue_size = 0; // キューの中身の要素数 queue_pos = 0; // キューの何番目まで処理したか ・Stepイベントで次のように処理 if (!instance_exists(global.current_id)) { // 行動しているインスタンスがいない場合 if (queue_pos >= queue_size) { // キューが空だったら…… queue[0] = obj_player.id; // 先頭に主人公のIDを入れ…… queue_size = 1; with (obj_enemy) { // 他のすべての敵もキューに入れる other.queue[other.queue_size] = id; other.queue_size += 1; } queue_pos = 0; } // キューから一つ取り出して行動を開始させる global.current_id = queue[queue_pos]; queue_pos += 1; } 主人公と敵のインスタンスは ・global.current_id == id だったら自分が行動する ・行動が終わったらglobal.current_idをnooneに戻す とすればいい。
|

|