[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
こんにちはorこんばんわ。
岩でございます。
二ヶ月ぶりぐらいの更新となります。
5ヶ月近く前になりますが、ポーズを実装するという記事を書きました。
今回はその続き、メニュー画面を実装する方法です。
instance_deactiveを使う方法に色々と追加していきます。
1.メニューウインドウを表示する
instance_deactiveでオブジェクトを一時的に消す(正確には機能させなくする)ため、メニューの表示用のオブジェクト、obj_menu_controlを作り、そこにポーズ用の処理を書き込む
というところまでを前回説明しました。
メニューウインドウ表示の処理もこのobj_menu_controlに追加していきます。
- if(keyboard_check_pressed(global.k_menu))
- {
- if(!instance_exists(obj_menu))
- {
- instance_create(view_xview[0],view_yview[0],obj_menu);//create_window
- if(instance_exists(obj_enemy))instance_deactivate_object(obj_enemy);
- ・
- ・
- ・
- menu = 1;
- }
- }
6行以下はdeactiveのための処理ですので説明は省きます。
5行目にてobj_menuを生成しているわけですが、3行目のif文で一個以上のobj_menuが生成されないよう制御をしています。
(たぶん条件をいじればもっとスマートに出来るのでしょうが、思いつきませんでした・・・)
ちなみに生成座標はviewの中での位置で指定しています。
obj_menuにはスプライトとしてメニュー画面の外枠を指定しています。
↓例
2.ウインドウの出し方を工夫する
上記の方法でもいいのですが、ウインドウの出し方をちょっと工夫してみたいので、下からぐ~~っとせり出すようにしてみます。
まず、画面外にウインドウを生成するため、座標を変更します
instance_create(view_xview[0],view_yview[0] + 240,obj_menu);
360 × 240の画面での場合の例です。
そうしましたら、以下のようなコードを追加します。
- if(obj_menu_control.menu == 1)
- {
- if(y == view_yview[0] + 240)
- {
- vspeed = -10;
- }
- if(y >= view_yview[0])
- {
- vspeed = 0;
- }
- exit;
- }
obj_menuの位置がviewのどの場所にあるかで動く、動かないを変更します。
スピードはお好みのもので。
また、出した以上は戻してやらなければいけません。
スペースキーを押した
↓
メニュー画面が出ていない → obj_menuを下から上へ動かす
メニュー画面が出ている → obj_menuを上から下へ動かし、消す
という処理をしてやります。
そこで使うのが先ほどから出ている変数menuです。
ここではmenuをobj_menu_controlにて定義しています。
この条件を追加してやったものが以下のコードです。
<obj_menu_control>
- if(keyboard_check_pressed(global.k_menu))
- {
- if(!instance_exists(obj_menu))
- {
- instance_create(view_xview[0],view_yview[0]+240,obj_menu);//create_window
- //instance_deactive
- if(instance_exists(obj_enemy))instance_deactivate_object(obj_enemy);
- ・
- ・
- ・
- menu = 1;
- exit;
- }
- if(instance_exists(obj_menu))
- {
- menu = 0;
- }
- }
変数menuでメニューがあるかどうかの状況判断をしています。
そして、obj_menuでは
<obj_menu>
- if(obj_menu_control.menu == 1)
- {
- if(y == view_yview[0] + 240)
- {
- vspeed = -10;
- }
- if(y == view_yview[0])
- {
- vspeed = 0;
- }
- exit;
- }
- if(obj_menu_control.move == 0)
- {
- if(y == view_yview[0])
- {
- vspeed = 10;
- }
- if(y == view_yview[0] + 240)
- {
- instance_destroy();
- instance_activate_object(obj_enemy);
- ・
- ・
- ・
- }
- exit;
- }
変数menuでの条件分けをした上で、obj_menuの消去とインスタンスをアクティブにするという部分も追加されています。
これにカーソルとか他のウインドウを追加してやることでこんな風になります。
↓
相変わらずの人様の画像でございます。
※相変わらずEDGEにてドット絵打ち中ですが、何とか間とか歩行グラフィックが完成しました。
恥ずかしながらこんな感じです。
↓
近いうちにこいつを使った動作の基本部分ぐらいは動画で公開したいものです。
では今回はこの辺で。
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城