レビニアよ。マウス操作ゲーム自作解説4回目にしてようやくだけど、いよいよ実際にマウスでクリックしてゲームを操作する解説に入るわよ。
前回はタイトル画面を表示させる所まで作ったから、そこからの続きになるわね。
並列実行コモンでゲームをマウス操作する
マウスの操作は並列実行のコモンで制御することになるわ。タイトル画面を表示したコモンのすぐ下に作成してね。
コモン作成:名前「┗タイトルメニュー操作」、起動条件「並列実行/コモンセルフ99=1」
※「┗」みたいな記号は「けいせん」で変換すれば出てくるわよ。
このコモン自体は並列実行だけど、起動/停止はこのコモン自体を呼び出して制御することになるわ。
なので上記のように、入力設定に起動と停止の選択肢を設定して、
先頭に呼び出し時に起動条件をオンオフするための条件分岐を作成。
■条件分岐(変数): 【1】 CSelf0[起動/停止] が 1 と同じ 【2】 CSelf0[起動/停止] が -1 と同じ
-◇分岐: 【1】 [ CSelf0[起動/停止] が 1 と同じ ]の場合↓
|▼ 並列実行開始
|■変数操作: CSelf0[起動/停止] = 0 + 0
|■変数操作: CSelf99[起動条件] = 1 + 0
|■イベント処理中断
|■
-◇分岐: 【2】 [ CSelf0[起動/停止] が -1 と同じ ]の場合↓
|▼ 並列実行終了
|■変数操作: CSelf0[起動/停止] = 0 + 0
|■変数操作: CSelf99[起動条件] = 0 + 0
|■イベント処理中断
|■
◇分岐終了◇
ここまでが条件付きの並列実行コモンを呼び出しで制御するためのテンプレート。この辺の仕組みは↓の記事で解説しているわ。今後もよく使う処理だから一度目を通しておいてね。
セルフ変数は「マウスクリック状態」と「マウスが操作する画像に重なっているか」の判定に2つほど使うわよ(あとは起動条件に使う99番も)。
ここから下がこのコモンが起動した場合に実際に並列実行される処理になるわ。まずはマウスのクリック状態を取得。
■キー入力:CSelf10[入力待ち][入力待ち] マウス 左クリック(20) 右クリック(21)
そしたら入力されたのが左クリックか右クリックかの条件分岐を作成。
■条件分岐(変数): 【1】 CSelf10[入力待ち] が 20 と同じ 【2】 CSelf10[入力待ち] が 21 と同じ
-◇分岐: 【1】 [ CSelf10[入力待ち] が 20 と同じ ]の場合↓
|■
-◇分岐: 【2】 [ CSelf10[入力待ち] が 21 と同じ ]の場合↓
|■
◇分岐終了◇
左クリックの分岐内で、マウスがクリック対象のピクチャに重なっているかの判定を取得。変数操作+を使うのよ。
■変数操作+: CSelf11[マウス判定] = ピクチャ:3 の マウス重なってる?(1=YES)
そしたら更に条件分岐。ピクチャにマウスが重なっていた=1の条件分岐を作成してね。
■条件分岐(変数): 【1】 CSelf11[マウス判定] が 1 以上
-◇分岐: 【1】 [ CSelf11[マウス判定] が 1 以上 ]の場合↓
|■
◇分岐終了◇
つまりこの一連の処理は「マウスが左クリックされている&ゲーム開始の文字にマウスが重なっている状態」ということになるわね。
確認のため、クリック時に効果音が鳴るようにしてみましょうか。Dataフォルダ内にSEフォルダを作成して基本システム用フォルダから適当な効果音素材をコピペして、
分岐内でサウンド再生させてみましょう。クリック時の動作が過敏にならないようにウェイト1フレームを入れておくといいわ。
■ウェイト:1 フレーム
■サウンド:SE ファイル[SE/[System]Enter02_Koya.ogg] 音 100% 周 100% (0 チャンネル) 再生 / 遅延:0フレーム
ゲームをテスト起動して確認。「ゲーム開始」のピクチャ上で左クリックした時に効果音が再生されたら成功よ。
今度はすぐ下に「ゲーム終了」をクリックした場合の処理も追加しましょう。コピペしてピクチャ番号を4に変えればいいわ。
■変数操作+: CSelf11[マウス判定] = ピクチャ:4 の マウス重なってる?(1=YES)
■条件分岐(変数): 【1】 CSelf11[マウス判定] が 1 以上
-◇分岐: 【1】 [ CSelf11[マウス判定] が 1 以上 ]の場合↓
|■ウェイト:1 フレーム
|■サウンド:SE ファイル[SE/[System]Enter02_Koya.ogg] 音 100% 周 100% (0 チャンネル) 再生 / 遅延:0フレーム
|■
◇分岐終了◇
「ゲーム終了」のピクチャを左クリックして同じように効果音が再生されればOK。
今度は効果音だけじゃなく実際にゲームを操作してみましょうか。「ゲーム開始」クリック時にタイトル画面が消去されるようにしてみるわね。メニュー操作の起動条件をオフにするのも忘れずに。
■イベントの挿入[名]: [“┗タイトルメニュー操作”] <コモンEv 11> / -1:停止
■イベントの挿入[名]: [“■タイトル画面表示”] <コモンEv 10> / 1:消去
「ゲーム開始」のピクチャを左クリックしたら画面が真っ暗&BGMが停止されるはずよ。
次はゲーム終了をクリックしたら場合。15フレーム後にゲームが終了するようにしてみましょう。
■ウェイト:15 フレーム
■ゲーム終了
「ゲーム終了」のピクチャを左クリックしたら効果音がなってゲームが閉じるはずよ(スクショじゃわかんないけどね)。
そうそう、右クリックの分岐には何も入力していなかったわね。まぁなんでもいいのだけど、とりあえずゲームがリセットされタイトルに戻るようにしてみましょうか。
■ウェイト:1 フレーム
■サウンド:SE ファイル[SE/[System]Enter02_Koya.ogg] 音 100% 周 100% (0 チャンネル) 再生 / 遅延:0フレーム
■ウェイト:15 フレーム
■自動キー入力: キーボード入力 コード[ 188 ] ( F12キー )
画面のどこかで右クリックすれば、F12キーを押してゲームをリセットしたのと同じ状態になるはずよ。
ここまでが「マウスで特定のピクチャをクリックすると動作する処理」の基礎的な流れになるわ。
ちょっと難しかったかもしれないけど、要は「マウスがクリックされているか」「マウスカーソルが特定のピクチャに重なっているか」を判定して処理を実行している、それだけのことよ。
あとはこの応用ね。クリック対象のピクチャを表示させて同じようにクリックと重なり判定を使って処理をさせればいいだけ。
こんなところで今回の解説は終了。次回は「マウスカーソルが重なった時だけピクチャの色を変えてクリックする場所だと分かりやすくする」という事をやってみようと思うわ。