忍者ブログ
「Gamemakerでゲームを作って見よう」 ということで、作業メモっぽい使い方をする予定。 愚痴なんかが多くなるかも・・・
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

好きな槍は獣の槍。
岩ですこんばんわ。
いや~・・・
本当に『うしおととら』は少年漫画の最高傑作ですわ。

さてさて。
出張やら友人の結婚式やらで伸びに伸びていた更新ですが、どうにかこうにか今回の更新にこぎつけました。

今回はゲームをゲームらしく飾りつけようという内容の第一弾でございます。
今回のテーマは


『ゲームにポーズを追加しよう』


です。
Gamemaker上でゲームを一時的に止めて、尚且つメニュー画面も表示してしまおうと思います。



まず最初にゲームの処理を途中で止める方法を紹介します。

1.とにかく止める
プレイヤーキャラのキープレスイベント(この例ではCTRL)に以下のコードを追加します。
  1. var c;

  2. c = 0;
  3. while (c != vk_control) {
  4.   keyboard_wait();
  5.   c = keyboard_lastkey;
  6. }

変数cを用意し、0で初期化します。
そしてwhile構文内で以下のような処理を繰り返させます。

キー入力を待つ

キー入力の値を変数cに格納
↓                                                                                   
キー入力がCTRLならループを続ける。
       CTRLでないならばループを終える

while構文はカッコ内の条件を満たすまでループを続けますので、その間ゲームが止まるというわけです。ただ、その間他の処理ができません。

2.止めた上でいろいろな処理ができるようにする
使うのはinstance_deactivateという関数です。
この関数はインスタントをdeactive状態にします。
deactive状態のオブジェクトは一切の処理を行わなくなります。スプライトの描画もストップされるため、画面上から姿を一切消した状態となります。
ただ、その直前の状態をすべて保持するため、再びアクティブにすることで直前の状態を保ったまま復帰させることができます。

例えば画面内に敵(obj_enemy)、敵の撃った弾(obj_enemy_bullet)、プレイヤーキャラ(obj_player)、
プレイヤーの撃った弾(obj_player_bullet)
があったとした場合、これらをdeactive状態にしてやればよいわけです。

  1. if(stop=0 && keyboard_check_pressed(vk_space))
  2. {
  3.         if(instance_exists(obj_enemy))instance_deactivate_object(obj_enemy);
  4.         if(instance_exists(obj_player))instance_deactivate_object(obj_player);
  5.         if(instance_exists(obj_player_bullet))instance_deactivate_object(obj_player_bullet)
  6.         if(instance_exists(obj_enemy_bullet))instance_deactivate_object(obj_enemy_bullet)
  7. stop = 1;
  8. }

 

また、以下のようなコードを入力すると元の状態に戻すことができます。
 

  1. if(stop == 1 && keyboard_check_pressed(vk_space))

  2. {

  3.       instance_activate(all);

  4.       stop = 0;

  5. }
上記のコードではスペースキーを押すことでポーズ、ポーズ解除を行っています。
変数stop(クリエイトイベントで0に設定しておきましょう)が0ならばポーズ
1ならばポーズ解除となります。
元に戻す際にはすべてのオブジェクトを指定すればよいですのでallを使用しています。
上記のソースをどこに入力するかですが、プレイヤーキャラに追記してしまいますとdeactiveになっているため実行されません。
そこで、別個にobj_stop_controlのようなオブジェクトを作り、そこに入力しましょう。
この場合、obj_stop_controlをdeactiveにしないように気をつけましょう。

ちなみにこの方法ですと、画面内には何も表示されません。
次回はメニュー画面を表示する部分も含めて説明していきたいと思います。
sprite_menu.png
 

拍手

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
[28]  [27]  [26]  [25]  [24]  [23]  [22]  [21
アクセスカウンター
プロフィール
HN:
性別:
男性
趣味:
読書・ゲーム
自己紹介:
・好きな作家
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城
カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
ブログ内検索
最新コメント
[04/30 dean]
[04/29 管理人]
[04/29 dean]
[04/08 管理人]
[04/07 dean]
忍者アナライズ
バーコード
フリーエリア
Copyright (C) Gamemakerでも使ってみる

Template by あでる / Material by 素材くん「無料WEB素材屋」 / 忍者ブログ [PR]