「Gamemakerでゲームを作って見よう」
ということで、作業メモっぽい使い方をする予定。
愚痴なんかが多くなるかも・・・
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
好きなお笑い芸人はラーメンズ。
こんにちはorこんばんわ。
NHKのオンエアーバトルの頃から見て好きでした。
今回はいよいよ弾をボスキャラに実際に撃たせます
こんにちはorこんばんわ。
NHKのオンエアーバトルの頃から見て好きでした。
今回はいよいよ弾をボスキャラに実際に撃たせます
今回は少々長くなりそうですので、できるだけうまくまとめていこうと考えております。
1.用意するオブジェクト(オブジェクト名は仮につけているものです)
obj_boss:ボスキャラ本体
obj_bullet:ボスが撃つ弾
obj_laser:ボスが撃つレーザー
2.前準備
まず、obj_bossのクリエイトイベントに以下のコードを追加します。
alarm[0]はその動作を何ステップ行わせた以下に使います。
alarm[1]は弾を撃たせるときの間隔です。
alarm[0]はalarm[1]の倍数にするのが良いです。
angleはボスキャラから見た自機の角度を格納するのに使います。
そして、ステップイベントにて
ここまでは準備段階です。
3.ボスキャラに取らせたい動きの設定
プレイヤーキャラを動かす際、プレイヤーがどのキーを押したかでキャラがどのような動作を行うかを判定します。
Gamemakerであらわしますと以下のようになると思います
というようにしてやればいいわけです。
つまり、変数move_typeはプレイヤーのキー入力の代わりのものというわけです。
動作を表す変数なわけですので、move_typeは切り替わる必要があります。
そこで、アラームを使います。
一定時間経過するごとにmove_typeの値を変化させるようにしてやればいいわけです。
というわけで、例として、以下のような動作を行うボスキャラの設定をしてみましょう。
move_typeが・・・
0:何もしない。
1:弾を自機狙いで20ステップごとに撃つ。
2:3Way弾を20ステップごとに撃つ。
3:レーザーを撃つ
という動作を順番に120ステップづつ、切り替えて行う。
まず、アラーム0イベントに以下のコードを書きます。
move_typeが3のときなのですが、レーザーは一定間隔で何発も撃つのではなく、前回やったように一発大きいのを撃たせたいので、アラーム1ではなく、アラーム0のイベントで撃たせます。
上記のアラームイベント0のコードに
move_typeが変更したときに3の値をとる状態のときにレーザーを生成します。
生成したレーザーについては前回の解説どおりです。
以上が動かないボスキャラの作り方の一例です。
ここまで長々と書いておいてなんですが、今回紹介しましたのはあくまでもいくつもあるやり方の中のひとつに過ぎません。
ほかにももっとスマートなやり方があるかもしれませんので、このやり方にとらわれずにいろいろなやり方を模索してみてください。
今回は以上です。
1.用意するオブジェクト(オブジェクト名は仮につけているものです)
obj_boss:ボスキャラ本体
obj_bullet:ボスが撃つ弾
obj_laser:ボスが撃つレーザー
2.前準備
まず、obj_bossのクリエイトイベントに以下のコードを追加します。
- move_type = 0;
- alarm[0] = 120;
- alarm[1] = 20;
- angle = 0;
alarm[0]はその動作を何ステップ行わせた以下に使います。
alarm[1]は弾を撃たせるときの間隔です。
alarm[0]はalarm[1]の倍数にするのが良いです。
angleはボスキャラから見た自機の角度を格納するのに使います。
そして、ステップイベントにて
- angle = point_direction(x,y,obj_player.x,obj_player.y);
ここまでは準備段階です。
3.ボスキャラに取らせたい動きの設定
プレイヤーキャラを動かす際、プレイヤーがどのキーを押したかでキャラがどのような動作を行うかを判定します。
Gamemakerであらわしますと以下のようになると思います
- if(keyboard_check(vk_left))//キャラが左に動く;
- if(keyboard_check(vk_right))//キャラが右に動く;
- if(keyboard_check(vk_space))//キャラがショットを撃つ;
- if(move_type == 0)//ボスキャラが右に動く
- if(move_type == 1)//ボスキャラが左に動く
というようにしてやればいいわけです。
つまり、変数move_typeはプレイヤーのキー入力の代わりのものというわけです。
動作を表す変数なわけですので、move_typeは切り替わる必要があります。
そこで、アラームを使います。
一定時間経過するごとにmove_typeの値を変化させるようにしてやればいいわけです。
というわけで、例として、以下のような動作を行うボスキャラの設定をしてみましょう。
move_typeが・・・
0:何もしない。
1:弾を自機狙いで20ステップごとに撃つ。
2:3Way弾を20ステップごとに撃つ。
3:レーザーを撃つ
という動作を順番に120ステップづつ、切り替えて行う。
まず、アラーム0イベントに以下のコードを書きます。
- if(move_type < 4)
- {
- move_type += 1;
- }
- else
- {
- move_type = 0;
- }
- alarm[0] = 120;
これはアラーム0が0になるたびに行われる処理でして、
move_typeに1を加え、4以上になるようならば0に戻すというように、move_typeの値の制御を行うためのものです。
これで、120ステップごとにmove_typeが変わるようになります。
弾を撃たせる場合は前々回やったとおり、発射間隔をアラームで設定します。
alarm[1]イベントに以下のようなコードを書きます。
- switch(move_type)
- {
- case 0:
- break;
- case 1:
- bull_1 = instance_create(x,y,obj_bullet_1);
- bull_1.direction = angle;
- bull_1.speed = 5;
- break;
- case 2:
- bull_1 = instance_create(start_x,start_y,obj_bullet_2);
- bull_1.direction = angle;
- bull_1.speed = 5;
- bull_2 = instance_create(start_x,start_y,obj_bullet_2);
- bull_2.direction = angle + 30;
- bull_2.speed = 5;
- bull_3 = instance_create(start_x,start_y,obj_bullet_2);
- bull_3.direction = angle - 30;
- bull_3.speed = 5;
- break;
- }
- alarm[1] = 20;
move_typeが3のときなのですが、レーザーは一定間隔で何発も撃つのではなく、前回やったように一発大きいのを撃たせたいので、アラーム1ではなく、アラーム0のイベントで撃たせます。
上記のアラームイベント0のコードに
- if(move_type < 4)
- {
- move_type += 1;
- if(move_type == 3)
- {
- instance_create(x,y,obj_laser)
- }
- }
move_typeが変更したときに3の値をとる状態のときにレーザーを生成します。
生成したレーザーについては前回の解説どおりです。
以上が動かないボスキャラの作り方の一例です。
ここまで長々と書いておいてなんですが、今回紹介しましたのはあくまでもいくつもあるやり方の中のひとつに過ぎません。
ほかにももっとスマートなやり方があるかもしれませんので、このやり方にとらわれずにいろいろなやり方を模索してみてください。
今回は以上です。
PR
この記事にコメントする
アクセスカウンター
プロフィール
HN:
岩
性別:
男性
趣味:
読書・ゲーム
自己紹介:
・好きな作家
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城
カレンダー
ブログ内検索
最新記事
(03/21)
(01/17)
(10/05)
(08/05)
(07/27)
忍者アナライズ