りよねこたわ~

ロールプレイングゲーム作ってみたいにゃ~でもどうしたらいいのにゃ~?

キャラクターの向きでイベントを起こすにゃ~

ω・`) 13枚目のマップとイベントを作成中にゃ~。

っ´ーωー`)っ なかなか思うように進まにゃいにゃ~。

ここのマップも、マップとイベントが複雑なんにゃ~。

 

ω・`) 今日はキャラクターの向きでイベントを起こすことを考えてみるにゃ~。

普通に考えると、イベントエディタのイベントコマンドに、条件分岐っていうのがあって、「プレイヤーの向きが下を向いている」場合の処理なんかを登録できるんにゃ~。

f:id:riyoneko:20180314170644j:plain

あとは、イベントのトリガーを「プレイヤーから接触」にでもすれば、プレイヤーから接触したときに、下を向いていればイベントを実行させることができるにゃ~。

 

ただこれだけだと、その場で向きを変えた場合とか、右からイベントに接触するとか、思うようにイベントが起動しないこともあるんにゃ~。

 

ω・`)b というわけで、考えたのがこれにゃ~。

まずイベントページ1枚目で、イベントに接触した場合の処理を行うにゃ~。

ここでは、セルフスイッチBをONにしてるにゃ~。

f:id:riyoneko:20180314172133j:plain

イベントページ3が、セルフスイッチBがONのときに出現するイベントになってるにゃ~。

 

イベントページ2では、セルフスイッチAがONのときにイベントを出現させて、さらに並列処理にしているにゃ~。

f:id:riyoneko:20180314172444j:plain

ここはあとから使うからとりあえず次にいくにゃ~。

 

イベントページ3では、セルフスイッチBがONになったときにこのイベントが出現するようにしてるにゃ~。

トリガーを並列処理にすることで、このイベントを周期的に処理するにゃ~。

f:id:riyoneko:20180314172818j:plain

つまり、下を向いているときは、セルフスイッチCをONにして、セルフスイッチBをOFFにしてるにゃ~。

下以外を向いているときは何もしないにゃ~。

 

イベントページ4で、セルフスイッチCがONになったときに実行する処理を登録するにゃ~。

f:id:riyoneko:20180314173156j:plain

セルフスイッチAをON、CをOFFにすることで、イベントが終了した後、イベントページ2の何もしない処理をしてるにゃ~。

 

つまりこの処理は、下を向いたときにイベントを実行する処理を表しているにゃ~。

その場で右を向いてから下を向いても実行されるところがいいところにゃ~。

 

欠点は、この1つのイベントで、イベントページ3(セルフスイッチB)をOFFにできないことかにゃ~?

例えば、このイベントに上から接触(イベントページ1を実行)してイベントを実行(イベントページ3、4、2を実行)したとするにゃ~。

その後、右を向いて(イベントページ2、3を実行)、イベントの右側に移動したとするにゃ~。

そうすると、セルフスイッチBがONになったままになるんにゃ~。

つまり、どこでも下を向くとイベントが実行されてしまうにゃ~。

 

これを防ぐために、イベントの4方向にセルフスイッチBをOFFにするスクリプトを置いておく必要があるにゃ~。

key = [1, 13, "B"];

$gameSelfSwitches.setValue(key, false);

こんな感じのスクリプトかにゃ~?

keyで表されている、1はマップID、13はイベントID、Bはセルフスイッチにゃ~。

それを、$gameSelfSwitches.setValueで、OFF(false)にするってことにゃ~。

 

ω・`) もっと簡単な方法ないかにゃ~?

 

あったにゃ~(*´ω`*)

riyoneko.hatenablog.jp

 

壁ドンしたときに音を出すにゃ~

ω・`) 12枚目のマップとイベントを作成中にゃ~。

ω・`) うにゃ?進むのが遅いにゃ~?

っ´ーωー`)っ 11枚めのマップで相当苦戦したからにゃ~。

 

ω・`) それはさておきにゃ~。

3Dダンジョンといえば、壁に向かって進もうとしたときに出る(鳴る?)アウチッ!って文字と音にゃよね~w

今は文字は出せないけど、音はなんとか出せるようになったにゃ~。

移動方法は、3Dダンジョン用にちょっといじっていて、

 ↑:一歩前に移動

 →:右を向く

 ←:左を向く

 ↓:後ろを向く

って動作するようにしたにゃ~。

これに、つぎのようなコードを追加するんにゃ~。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

var tmpx = $gamePlayer.x;

var tmpy = $gamePlayer.y;

 

if (Imput.isTriggered('up')) {

    $gamePlayer.moveForward();

    if (tmpx === $gamePlayer.x) {

        if (tmpy === $gamePlayer.y) {

            AudioManager.playSe({"name":"Blow2", "volume":90, "pitch":100, "pan":0});

        };

    };

}; 

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

まず、$gamePlayer.xと、$gamePlayer.yで、現在のキャラクターの座標を取得するにゃ~。

Input.isTriggered('up')は、↑キーが押された時にゃね。

で、↑キーが押されたときに、一歩前に進む($gamePlayer.moveForward();)にゃ~。

その後で、キャラクターの座標と、前もって取得したキャラクターの座標を比較(tmpx === $gamePlayer.xtmpy === $gamePlayer.y)して、同じ場合は、SEを鳴らす(AudioManager.playSe)って処理なんにゃ~。

 

ω・`) うにゃ~、簡単にゃよね~?

 

イベントエディタに苦戦中にゃ~

ω・`) 11枚目のマップとイベントを作成中にゃ~。

だいたい半分くらいできたかにゃ~?

 

それにしてもイベントエディタは曲者にゃ~。

MVをバージョン1.6.0にしたら、イベントエディタをスクロールさせた時表示がおかしくなったにゃ~。

すぐにバージョン1.5.1にもどしたんだけどにゃ~。

 

あとはそうにゃね~。

「こう動作してほしいんにゃッ!」って思ってイベント作ってるんにゃけど、なかなか思うように動作してくれないんにゃ~。

「イベントから接触」させてイベントを実行させるのが意外とむつかしかったかにゃ~。

あと「並列処理」かにゃ~。

「並列処理」を使うと重くなるらしいから、極力使わないようにしてるんにゃ~。

どうしても必要なところは使うけどにゃ~。

 

っ´ーωー`)っ 残り半分、3月中にできるかにゃ~?

 

順調にマップとイベント作ってるにゃ~?

ω・`) 9枚目のマップとイベント作成中にゃ~。

進むのが遅いのは、前回説明したとおり、あれこれ機能を追加しちゃうからにゃ~。

ま~くん 「りよちゃんの悪い癖だよ。」

ω・`) 「うにゃッ!?マ、マイペースなのにゃ~。」

ま~くん 「あまりひどいとゲーム出来上がらないから気をつけてね。」

っ´ーωー`)っ 「むにゃ~。」

 

メニュー画面にゃ~

ω・`) 7枚目のマップとイベントを作成中にゃ~。

ちょっと進みが遅いかにゃ~って思ってるにゃ~。

なぜかっていうとにゃ~。

作りながらこれをこうしたらおもしろいんじゃにゃいかにゃ~っていうのがいくつかでてきてにゃ~。

っ´ーωー`)っ 結果、最初の方のイベントを作り直してしまってるからにゃ~。

 

ω・`)っ 今日はメニュー画面の紹介にゃ~。

f:id:riyoneko:20180214171929j:plain

メニューリストは、デフォルトだとスキルとか並び替えとかセーブとかあるんにゃけど、このゲームでは必要にゃいのでばっさりカットにゃ~。

このへんは、データベースの設定のところにチェックボックスがあるからそんなに難しくにゃいにゃ~。

右側の簡易ステータス画面なんにゃけど、必要ないMPと、HPとMPについているバーを消してるにゃ~。

ω・`)b ここはスクリプトをいじって表示させないようにしてるにゃ~。

 

ω・`) アイテム画面にゃ~。

f:id:riyoneko:20180214172345j:plain

このへんは、デフォルトのまま使う予定にゃ~。

 

ω・`) 装備画面にゃ~。

f:id:riyoneko:20180214172505j:plain

ω・`) 装備ウィンドウは、サブメニューがあったんにゃけど、それを削除してその分装備欄を拡張したにゃ~。

tomoakyさんの「最強全脱ぎコマンド削除」っていうプラグインを使わせてもらってるにゃ~。

装備欄のステータスは結構苦労したにゃ~。

基本的には、装備変更前と装備変更後のステータス表示関数を呼び出して、ステータスが格納されている変数を参照させているにゃ~。

あとは、装備アイテム欄でいえば、手甲と装身具を追加してるかにゃ~。

データベースの設定で、装身具を2つ追加するのは簡単なんにゃけど、それだと名前は同じだけど別々の装身具になっちゃうにゃ~。

それを解決するために、ru_shalmさんが公開している「装備タイプ名が同じならば、同じ種別のアイテムを装備できるようにする」プラグインを使わせてもらってるにゃ~。

 

ω・`) 最後はステータス画面かにゃ~。

f:id:riyoneko:20180214174113j:plain

まずは、必要ないMPと次のレベルまでの表示を消してるにゃ~。

ステータス欄は、装備画面と同じように変数の値を参照してるにゃ~。

あとはそうにゃね~。

装備が7種類あるから、それらを全部表示できるように枠を広げてるにゃ~。

 

ω・`) まぁメニュー画面はこんなところかにゃ~?