[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
岩ですこんばんわ。
いや~・・・
本当に『うしおととら』は少年漫画の最高傑作ですわ。
さてさて。
出張やら友人の結婚式やらで伸びに伸びていた更新ですが、どうにかこうにか今回の更新にこぎつけました。
今回はゲームをゲームらしく飾りつけようという内容の第一弾でございます。
今回のテーマは
『ゲームにポーズを追加しよう』
です。
Gamemaker上でゲームを一時的に止めて、尚且つメニュー画面も表示してしまおうと思います。
1.とにかく止める
プレイヤーキャラのキープレスイベント(この例ではCTRL)に以下のコードを追加します。
-
var c;
- c = 0;
- while (c != vk_control) {
- keyboard_wait();
- c = keyboard_lastkey;
- }
-
変数cを用意し、0で初期化します。
そしてwhile構文内で以下のような処理を繰り返させます。
キー入力を待つ
↓
キー入力の値を変数cに格納
↓
キー入力がCTRLならループを続ける。
CTRLでないならばループを終える
while構文はカッコ内の条件を満たすまでループを続けますので、その間ゲームが止まるというわけです。ただ、その間他の処理ができません。
2.止めた上でいろいろな処理ができるようにする
使うのはinstance_deactivateという関数です。
この関数はインスタントをdeactive状態にします。
deactive状態のオブジェクトは一切の処理を行わなくなります。スプライトの描画もストップされるため、画面上から姿を一切消した状態となります。
ただ、その直前の状態をすべて保持するため、再びアクティブにすることで直前の状態を保ったまま復帰させることができます。
例えば画面内に敵(obj_enemy)、敵の撃った弾(obj_enemy_bullet)、プレイヤーキャラ(obj_player)、
プレイヤーの撃った弾(obj_player_bullet)
があったとした場合、これらをdeactive状態にしてやればよいわけです。
例
- if(stop=0 && keyboard_check_pressed(vk_space))
- {
- if(instance_exists(obj_enemy))instance_deactivate_object(obj_enemy);
- if(instance_exists(obj_player))instance_deactivate_object(obj_player);
- if(instance_exists(obj_player_bullet))instance_deactivate_object(obj_player_bullet)
- if(instance_exists(obj_enemy_bullet))instance_deactivate_object(obj_enemy_bullet)
- stop = 1;
- }
また、以下のようなコードを入力すると元の状態に戻すことができます。
- if(stop == 1 && keyboard_check_pressed(vk_space))
- {
- instance_activate(all);
- stop = 0;
- }
変数stop(クリエイトイベントで0に設定しておきましょう)が0ならばポーズ
1ならばポーズ解除となります。
元に戻す際にはすべてのオブジェクトを指定すればよいですのでallを使用しています。
上記のソースをどこに入力するかですが、プレイヤーキャラに追記してしまいますとdeactiveになっているため実行されません。
そこで、別個にobj_stop_controlのようなオブジェクトを作り、そこに入力しましょう。
この場合、obj_stop_controlをdeactiveにしないように気をつけましょう。
ちなみにこの方法ですと、画面内には何も表示されません。
次回はメニュー画面を表示する部分も含めて説明していきたいと思います。
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城