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

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

好きなゼルダシリーズは時のオカリナ。
こんにちはorこんばんわ。
岩でございます。

二ヶ月ぶりぐらいの更新となります。

5ヶ月近く前になりますが、ポーズを実装するという記事を書きました。
今回はその続き、メニュー画面を実装する方法です。



前回2通りのやり方でポーズを実装しましたが、今回は2つ目に紹介しました
instance_deactiveを使う方法に色々と追加していきます。

1.メニューウインドウを表示する
instance_deactiveでオブジェクトを一時的に消す(正確には機能させなくする)ため、メニューの表示用のオブジェクト、obj_menu_controlを作り、そこにポーズ用の処理を書き込む
というところまでを前回説明しました。
メニューウインドウ表示の処理もこのobj_menu_controlに追加していきます。
  1. if(keyboard_check_pressed(global.k_menu))
  2. {
  3.     if(!instance_exists(obj_menu))
  4.     {
  5.         instance_create(view_xview[0],view_yview[0],obj_menu);//create_window
  6.         if(instance_exists(obj_enemy))instance_deactivate_object(obj_enemy);
  7.                       ・
  8.                       ・
  9.                       ・
  10.   menu = 1;
  11.     }
  12. }

6行以下はdeactiveのための処理ですので説明は省きます。
5行目にてobj_menuを生成しているわけですが、3行目のif文で一個以上のobj_menuが生成されないよう制御をしています。
(たぶん条件をいじればもっとスマートに出来るのでしょうが、思いつきませんでした・・・)
ちなみに生成座標はviewの中での位置で指定しています。
obj_menuにはスプライトとしてメニュー画面の外枠を指定しています。
↓例
sprite_menu.png



2.ウインドウの出し方を工夫する
上記の方法でもいいのですが、ウインドウの出し方をちょっと工夫してみたいので、下からぐ~~っとせり出すようにしてみます。
まず、画面外にウインドウを生成するため、座標を変更します

        instance_create(view_xview[0],view_yview[0] + 240,obj_menu);

360 × 240の画面での場合の例です。
そうしましたら、以下のようなコードを追加します。

  1. if(obj_menu_control.menu == 1)
  2. {   
  3. if(y == view_yview[0] + 240)
  4.     {
  5.         vspeed = -10;
  6.     }
  7.     if(y >= view_yview[0])
  8.     {
  9.         vspeed = 0;
  10.     }
  11.     exit;
  12. }

obj_menuの位置がviewのどの場所にあるかで動く、動かないを変更します。
スピードはお好みのもので。
また、出した以上は戻してやらなければいけません。
スペースキーを押した

メニュー画面が出ていない → obj_menuを下から上へ動かす
メニュー画面が出ている   → obj_menuを上から下へ動かし、消す
という処理をしてやります。
そこで使うのが先ほどから出ている変数menuです。
ここではmenuをobj_menu_controlにて定義しています。
この条件を追加してやったものが以下のコードです。
<obj_menu_control>

  1. if(keyboard_check_pressed(global.k_menu))
  2. {
  3.     if(!instance_exists(obj_menu))
  4.     {
  5.         instance_create(view_xview[0],view_yview[0]+240,obj_menu);//create_window
  6.         //instance_deactive
  7.         if(instance_exists(obj_enemy))instance_deactivate_object(obj_enemy);
  8.                      ・
  9.                  ・
  10.                  ・
  11.    menu = 1;
  12.         exit;
  13.     }
  14.     if(instance_exists(obj_menu))
  15.     {
  16.         menu = 0;
  17.     }
  18. }

変数menuでメニューがあるかどうかの状況判断をしています。
そして、obj_menuでは
<obj_menu>

  1. if(obj_menu_control.menu == 1)
  2. {
  3.     if(y == view_yview[0] + 240)
  4.     {
  5.         vspeed = -10;
  6.     }
  7.     if(y == view_yview[0])
  8.     {
  9.         vspeed = 0;
  10.     }
  11.     exit;
  12. }
  13. if(obj_menu_control.move == 0)
  14. {
  15.     if(y == view_yview[0])
  16.     {
  17.         vspeed = 10;
  18.     }
  19.     if(y == view_yview[0] + 240)
  20.     {
  21.         instance_destroy();
  22.         instance_activate_object(obj_enemy);
  23.              ・   
  24.              ・
  25.              ・     
  26.     }
  27.     exit;
  28. }

変数menuでの条件分けをした上で、obj_menuの消去とインスタンスをアクティブにするという部分も追加されています。

これにカーソルとか他のウインドウを追加してやることでこんな風になります。

menu_sample.JPG








相変わらずの人様の画像でございます。

※相変わらずEDGEにてドット絵打ち中ですが、何とか間とか歩行グラフィックが完成しました。
恥ずかしながらこんな感じです。

running.gif



近いうちにこいつを使った動作の基本部分ぐらいは動画で公開したいものです。
では今回はこの辺で。

拍手

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
[28]  [27]  [26]  [25]  [24]  [23
アクセスカウンター
プロフィール
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]