とりあえずなんか書いとけ

Python3系とかアイワナ(GM8.1 Standard)とか読書とか

アイワナ:ポーズ画面を作る

それっぽい記事が見当たらなかったので,show_message()を使わないポーズ画面の作成について書こうと思います.
※ここで書く方法は「i wanna be the engine ErunatyanEdition」で使われているものと同じです.
※この記事では「i wanna be the engine yuuutu edition ver2.16」にポーズ画面を実装します.


この方法で作れるポーズ画面のイメージはこんな感じ↓

f:id:toki_0177:20190118121108p:plain
作成するポーズ画面のイメージ
ここからは実際に作り方を説明していきます.

ポーズ画面に表示する文字を作成する

drawイベントで「Pause」とかの文字を描画するのでも問題ありませんが,ちょっと装飾とかを加えるといい感じになるのでspriteに追加していきます.名前は「sprPause」とかで.

f:id:toki_0177:20190118110057p:plain
spriteにポーズ画面に表示したい文字を作成

ポーズ画面を描画するオブジェクトを作成する

オブジェクトを作成し,名前を「Pause」とかにします.
「Pause」のVisibleにチェックを入れ,Depthは-100ぐらいに.

ここから具体的に描画するものを設定していきます.
ポーズ中であることがわかるように画面全体を少し暗くする処理と,さっき作成した文字を表示する命令を「draw」イベントに書いていきます.

//draw event
draw_set_color(c_black);
draw_set_alpha(0.4);
draw_rectangle(x, y, x+800, y+608, false);
draw_set_alpha(1);

draw_sprite(sprPause, 0, x+400, y+304);

ポーズ状態にするためのオブジェクトを作成する

オブジェクトを作成し,名前を「objPause」とかにします.
Visibleとかの設定はそのままでいいです.
その後,「Create」イベントと「Step」イベントに以下のコードを書きます.

//create event
is_pause = false;
//step event
if(is_pause == true){
  while (1) {
    if (keyboard_check_pressed(vk_anykey)) {
      is_pause = false;
      with (Pause) instance_destroy();
      break;
    }
    sleep(10);
  }
}else{
  if (keyboard_check_pressed(global.pausebutton)) {
    is_pause = true;
    instance_create(view_xview, view_yview, Pause);
  }
}

作成したポーズ機能を使えるようにする

まず,オブジェクト「Player」の「Step」イベントに以下のコードを追加します.このif文に条件を追加したりすれば特定のルームではポーズ機能を使えなくするみたいなこともできます.

//step event
if(global.Pause_Message == 1 && !instance_exists(objPause)){
  instance_create(0, 0, objPause);
}


次に,「script」内の「SetGlobalOption」に,以下のコードを追加します.

//script SetGlobalOption
global.pausebutton = ord('P');

最後に,オブジェクト「world」の「press P-key」イベントを削除します.
これで完成です!お疲れさまでした.