りよねこたわ~

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

もぐらたたきかにゃ~

ω ・ =) 今週もテストと修正の繰り返しにゃ~。

ω- =) 進み具合は相変わらず遅いけど、ちゃんと進んでるにゃ~。

ω Ф =) おめがちゃんやぐっちゃんとは関係ないかもにゃ~?w

 

ω- =) それにしてもバグっていうか不具合っていうか、ぽこぽこ湧いてでてくるにゃ~。

ω- =) 設計が甘かったのかにゃ~?

ω ・ =) あとはあれにゃ~。

ω ・ =) スイッチとか変数とか、うにゃ~?あのスイッチはどこだったかにゃ~?ってこと結構あるんにゃ~。

ω- =) 次回作はこの辺も考えて作らにゃいとにゃ~。

ω- =) さすがに今から修正するのは、ちょ~~~っと影響が大きすぎるにゃ~。

 

ネコの手も借りたいにゃ~

ω- =) うにゃ~テストと修正の繰り返しにゃ~。

ω- =) それに進み具合が悪いにゃ~。

ω ・ =) みこってちゃんもそれなりに忙しいのにゃ~。

ω・*) おめがちゃんとうにゃうにゃしたり、おめがちゃんとうにゃうにゃしたりにゃ~。

ω- =) ま~くんも忙しいくて、ぜんぜん手伝ってくれにゃいしにゃ~。

ω- =) ネコの手も借りたいところにゃ~w

 

スイッチが整理できるかもにゃ~?

ω- =) ひたすらテスト、ひたすら修正にゃ~。

ω- =) でもちょっといろいろあって、進み具合が悪いにゃ~。

ω ・ =) にゃので、タイトルどおり役に立つかにゃ~?立たないかにゃ~?なお話にゃ~。

 

ω ・ =)b 今回は、「Enterキーを押したときに、扉を開けて向こう側に移動してメッセージを表示するイベント」の例で説明してみようかにゃ~。

f:id:riyoneko:20181121201534j:plain

こんな感じで、トリガーを決定ボタン、実行内容に場所移動とスイッチONを書いてるにゃ~。

「扉を開けて場所移動するにゃ~1」スイッチがONになるとなんかメッセージが表示されるにゃ~。

 

ω- =) ゲーム作り始めた頃に考えたのは、扉1つ1つにスイッチを用意する方法にゃ~。

全部のマップの扉にスイッチを用意してたから「扉を開けて場所移動するにゃ~??」ってスイッチがいっぱいできてたにゃ~w

まぁスイッチの数も上限は5000個にゃから、よっぽどのことがない限り足りなくなることはにゃいと思うのにゃ~。

 

ω ・ =) 2つ目に考えたのは、マップごとにスイッチを使い回す方法にゃ~。

メッセージを表示した後はスイッチをOFFにするし、イベントはそのマップのイベントが自動実行されるから、扉1つ1つにスイッチを用意しなくてもいいんじゃにゃいかにゃ~って思うのにゃ~。

ω ・ =) 扉の多いマップはスイッチが多くなるけれども、最初の方法よりはかなり少なくなるにゃ~。

 

ω ・ =) 3つ目に考えたのは、スイッチと変数を組み合わせる方法にゃ~。

「扉を開けて場所移動するにゃ~」ってスイッチ1つだけを出現条件にして、メッセージを表示するイベントを自動実行させると、イベント自体は出現するけど実行されるのはイベントID(?)が小さいイベントなのにゃ~。

f:id:riyoneko:20181121202213j:plain

そこでどうするかというとにゃ~、イベントの出現条件に変数を追加するのにゃ~。

f:id:riyoneko:20181121202402j:plain

ω ・ =)b イベントIDが小さい数ほど、変数に大きな数を入れておくことがポイントにゃ~。

σ(゜▽゜=)は999からイベントIDを引いた数を入れてるかにゃ~。

あとは場所移動するイベントのほうに、場所移動後に実行させたいイベントの変数を追記しておけばおっけ~にゃ~。

f:id:riyoneko:20181121203024j:plain

f:id:riyoneko:20181121203218j:plain

 これで出現するイベントのなかで実行したいイベントが実行されるにゃ~。

ω- =) 2つ目のマップごとにスイッチを使い回す方法と比べると、スイッチの数はどうかにゃ~?

ω- =) 複雑なイベントになると、あまり変わらないんじゃにゃいかにゃ~?

 

ω ・ =) というわけで今日のお話は終わりにゃ~。

 

画面の一部分だけフェードさせるにゃ~

ω-`) ずっとテスト中にゃ~。

ω-`) ちゃくちゃくとテスト中にゃ~。

ω-`) うにゃうにゃテスト中にゃ~。

ω・`) これだけにゃとつまらにゃいので、今日はフェードインとフェードアウトのお話にゃ~。

 

前々回の内容にちらっとスクリプトが載ってるのにゃ~。

 

riyoneko.hatenablog.jp

 

ω・`) これがスクリプトの内容にゃ~。

 

$gameScreen.movePicture(9,0,0,0,100,100,255,0,$gameVariables.value(10));

this.wait($gameVariables.value(10));

 

ピクチャの移動をスクリプトで書くとこうなるのにゃ~。

1行目の引数は左から、ピクチャ番号、原点、X座標、Y座標、幅の拡大率、高さの拡大率、不透明度、合成方法、時間にゃ~。

2行目は、完了までウェイトする場合に書くにゃ~。

 

ω・`)b どういうことかというとにゃ~、扉の前でEnterキーを押したら、ガチャっと音を鳴らして画面を暗く(フェードイン)して場所移動して画面を明るく(フェードアウト)してるのにゃ~。

ω-`) うにゃ~?フェードインとか場所移動のフェードは使わないのかってにゃ~?

ω・`) フェードインとか場所移動のフェードは、画面全体が暗くなっちゃってちょっと気になっちゃうのにゃ~。

ω・`)b だから黒い画像を用意して、それの透明度を変えてマップが表示されている部分だけ暗くしたり明るくしたりさせてるんにゃ~。

それにスクリプトで書いて、ピクチャの移動時間を変数を参照するようにしたほうが、あとから移動時間を変えることができるから便利なのにゃ~。

 

(`・∀・´)エッヘンニャッ!

 

続・並列処理には気をつけようにゃ~

ω-`) 先週の並列処理の修正なんにゃけど、まだ見落としてる点があったにゃ~。

ω・`) どういうことかというとにゃ…。

ω-`) えっとにゃ…どういうことにゃんだったかにゃ~?w

 

ω・`) 「扉を開けて場所移動する」って処理を自動実行にしたから、この処理が終わるまではキー入力は受け付けない(はず)にゃ~。

ω-`) 問題があったのはこのあとなんにゃ~。

場所移動した先でメッセージを表示するイベントがあるんにゃけど、このイベントを並列処理で作ってるとへんてこりんなことになっちゃうんにゃ~。

 

ω-`) うにゃ~?よくわかんにゃいにゃ~?

① 並列処理「上を向くと常にかわいいみこってちゃん画像が表示される」にゃ~。

② 並列処理「特定の場所で、右を向いているときにEnterキーを押すと扉スイッチをONにする」にゃ~。

③ 自動実行「扉スイッチがONになったときに、右に場所移動する」にゃ~。

④ 自動実行「場所移動した先で、セルフスイッチAをONにして並列処理を起動する」にゃ~。

⑤ 並列処理「右を向いているときにメッセージスイッチをONにする」にゃ~。

⑥ 自動実行「メッセージスイッチがONになったときにメッセージを表示する」にゃ~。

ω・`) こんなかんじかにゃ~?

 

ω-`) で、③の場所移動が行われているときに、左矢印キーをうにゃにゃにゃにゃッ!って連打してると、タイミングによっては⑥のメッセージが表示される前に左矢印キーが反応しちゃうんにゃ~。

どうなるかっていうと、①の上を向いたときに表示されるかわいいみこってちゃん画像と、⑥の右を向いたときに表示されるメッセージが一緒に表示されてしまうんにゃ~。

 

ω・`)b メッセージを表示させる処理を④の自動実行に変更すれば、場所移動から始まる処理の途中で矢印キーの入力を受け付けることはなくなる(と思う)にゃ~。