忍者ブログ

へぷたなすくろーる

RPGツクールのブログです。イベント講座とRGSS3スクリプト配布をやってます♪

Home > > [PR] Home > イベントのすゝめ > イベントのすゝめ(17) 「汎用型"足跡"イベント」

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

イベントのすゝめ(17) 「汎用型"足跡"イベント」

このコーナーでは、主に初心者さんに向けたイベントのテクニックを紹介していきます。
RPGツクールVXAceで説明していきますが、多くはVXや他のツクールでも可能です。
合言葉は「One night I tkooled a tkool.」

第十七回は移動すると足跡が残っていくというイベントの紹介です。
座標を使うため、第16回の「移動監視イベント」を応用します。
丁寧に説明していこうと思うので、少し長いかもしれませんが良かったら読んでみて下さい。
それから、イベント用に足跡キャラチップを用意しました!

トップの利用規約に従って、誰でも自由にお使い頂けます。(完全自作なので使用ツールを問いません)
そのままだと大きめのキャラチップや、デフォルメに適したサイズとなってますが
インポート時に半透明色に、薄い方の茶色を指定することで一回り小さくなり
RTPやFSMの足に近いリアルなサイズとなりますので、好きなほうを試してみて下さい。

ではこれを使ってどうイベントを組むのかは続きからどうぞ。
足跡イベントABC
まずは足跡そのものを作ってしまいましょう。
マップイベントを1つ作り、ページを4つ作ります。
それぞれのページの条件を、「変数aが2以上、4以上、6以上、8以上」にして
足跡の画像を「下向き、左向き、右向き、上向き」の順番で配置します。
(プライオリティを通常キャラの下、オプションは向き固定のみチェック)
これをコピペして、同じく変数bと変数cを条件にするイベントを作ります。
このイベントの解説
足跡イベントAなら変数aに対応して
0のとき:消える、2のとき:下向きの足跡、4のとき:左向きの足跡……と変化します。
つまり「変数の操作だけで変更できる、表示用イベント」というのがこのイベントの役割です。

メイン処理(移動監視イベント+)
表示用のイベントが出来たので、今度は制御用のイベントを作りましょう。
コモンイベントの並列処理で、条件:スイッチ「足跡オン」がオンの場合です。
変数の操作:変数C = 変数の操作:変数A
変数の操作:変数D = 変数の操作:変数B
変数の操作:変数A = プレイヤーのマップX
変数の操作:変数B = プレイヤーのマップY
変数の操作:変数E = プレイヤーの向き
条件分岐:変数C != 0
  条件分岐:変数C != 変数A
    スイッチ「足跡置く」をonにする
条件分岐:変数D != 0
  条件分岐:変数D != 変数B
    スイッチ「足跡置く」をonにする
このイベントの解説
基本は第16回のものと同じですが、向きの情報も変数Eに入れるようにしたのと
スイッチAで2ページに別ける方法をやめて、変数CDが0の場合は判定を行わないように改造してあります。
後者は左上(座標0, 0)で反応しないというデメリットがありますが、左上は大抵壁か屋根になっているので
今回は無視してスイッチを減らして構造をすっきりさせるメリットを優先しました。
実際に足跡を置く処理はマップイベントで行いたいので
スイッチ「足跡置く」を使って次のイベントにバトンタッチします。

足跡設置イベント
マップイベントの並列処理、条件:スイッチ「足跡置く」です。
マップイベントに処理を渡す理由は足跡イベントのイベントIDがマップ毎に違っても対応できるためです。
条件分岐:変数「足跡の番号」が0
  変数の操作:変数a = 変数E
  イベントの位置設定:足跡イベントA, [変数C][変数D]
  変数の操作:変数「足跡の番号」 = 1
条件分岐:変数「足跡の番号」が1
  変数の操作:変数b = 変数E
  イベントの位置設定:足跡イベントB, [変数C][変数D]
  変数の操作:変数「足跡の番号」 = 2
条件分岐:変数「足跡の番号」が2
  変数の操作:変数c = 変数E
  イベントの位置設定:足跡イベントC, [変数C][変数D]
  変数の操作:変数「足跡の番号」 = 0
スイッチの操作:スイッチ「足跡置く」をoffにする
このイベントの解説
内容は驚くほど単純です。これもしっかりと仕組みを作っていたおかげですね。
足跡イベントの画像をプレイヤーの向きに合わせて変更し、プレイヤーの移動前の位置に置く
それから3つの足跡が順番に置かれるように変数でカウントする、とこれだけです。
逆に言うとここを簡単にするために今までのイベントに工夫がしてあります。
まず位置監視イベントをメインにしたのは、主人公の移動前の座標が欲しかったからです。
それから足跡イベントの変数の条件が2468なのも、取得した主人公の向きはテンキー配列で
2468のどれかが入るので、そのまま代入するだけで済むようにするためです。

場所移動イベントに追加する処理
もう1つ忘れずに作っておきたいのがこの部分です。
違うマップに場所移動する時には
「変数A、変数B、変数a、変数b、変数c」を全て0にする必要があります。
変数の操作:変数A = 0
変数の操作:変数B = 0
変数の操作:変数a = 0
変数の操作:変数b = 0
変数の操作:変数c = 0
これをコモンイベントで作り、場所移動をさせるイベントで呼び出すようにすると楽です。
(場所移動のイベントコマンドのすぐ上か、それより下で呼び出すと安心)

カスタムのすゝめ
足跡イベントのイベントIDを全マップ共通にするならコモンイベントだけで作れます。
足跡イベントは今回は3つまでとしましたが増やすのは簡単でしょう。
足跡設置で座標を使って地形IDを取得すれば、地形に合わせた足跡を設置することも可能です。
またメイン処理を改造すれば主人公以外のキャラクターに足跡を設置することも可能です。
こういう改造をするなら、足跡の種類も増えることになるため
足跡イベントのページを増やすかイベント自体を増やすなどして実装することになるでしょう。

拍手[4回]

PR
-->
Responses2 Responses
1.監視イベントについて sallyさん (2013/07/10 23:18) [Edit]

某所ではお世話になっております。
あちらでの兼ね合いでイベントを拝見したのですが、方向を取得した後条件分岐のC!=0とD!=0の代わりに、
条件分岐:C=A
 イベント処理の中断
条件分岐D=B
 イベント処理の中断
この二つを入れれば、変数を0にする追加処理を入れなくても動作するようにならないでしょうか。

Re:監視イベントについて 奈々(なな) (2013/07/11 04:36)

>sallyさん
こちらこそお世話になっております。
コメントに関しては「メイン処理(移動監視イベント+)」の事ですよね?
最初にお詫びします。
解説で「変数C、変数D、変数a、変数b、変数cを全て0にする」と書いた部分は
「変数A、変数B、変数a、変数b、変数cを全て0にする」の誤りだと思われます。
その辺りの記事を訂正しました。
それで誤解をさせてしまった可能性が高いですが
念のため上記の訂正を踏まえた上で解説させて頂きます。
何分思い出しながら書いているので、不明瞭な点は遠慮なく指摘して下さいね。

提案の様にC == Aでイベント処理の中断を入れるというのは
C != Aでスイッチをonにしているのと同じことなので
言い換えると条件分岐のC != 0とD != 0を削除するのとも同じことですね。
そうすれば「場所移動などで変数CとDを0にする追加処理」は無くても動作はします。

ではその条件分岐:変数C != 0と、場所移動の変数C = 0は何故あるかと言うと
マップ移動した際に前マップの座標と違う座標に場所移動したとき
C != Aだとこれにも足跡が出現しまうのを防いでいます。
同時に解説(先のリンク)にあるようにゲーム開始時の誤作動も防ぐようになっています。

また、変数abcは0になっていないと出現前の足跡が見えてしまうので
やはり場所移動の際にリセットする必要があります。
なのでこれらを纏めてコモンイベントにして、場所移動時に追加処理をするように指示しています。
手間と言えば手間ですが、場所移動イベントはコピペもしやすいし
効果音やフェードの処理とか結構入れると思うので気にならないのではと思ったり。

2.Re:Re:監視イベントについて sallyさん (2013/07/15 23:50) [Edit]

すいません、すぐにご返答いただいていたのに気がつきませんでした;

書き込みさせていただいてから、x.y(0.0)を利用しなくてもなんとかならないかと考えてみましたが、スクリプトなしでは手間が増えてしまって無理でした;
絶対値の取得が面倒なのが、ツクールの欠点の一つですね。

イベント処理の中断は、いつも後処理が多いために入れていたのですが、ご指摘いただいて不必要なのに気づきました。

それにしても、こちらのイベント講座はすごく参考になります。
慣れているつもりでしたが、こういうやり方もあったかと目から鱗が落ちる思いです。

Re:Re:Re:監視イベントについて 奈々(なな) (2013/07/16 23:31)

いえいえお気になさらず。
イベントで絶対値の取得だと
条件分岐:V < 0
  変数の操作:V *= -1
とかになりますかね。
これがスクリプトだとabsでダイレクトに取れますからね。

基本的に講座などで紹介するものは
説明のしやすさ、理解のしやすさを優先するので
より効率的な手段があることは多いと思います。
例えば変数や処理を1つで済むところを別々にしたり
今回の件も、自動的な処理は説明が膨大になるので避けたりと。
それに気付いて自前で改良まで行ってくれれば万々歳ですしね。

とは言え、単純に効率の悪い方法で組んでいたりもしますし
講座を見る方が参考にもできると思うので
今回のようにコメントを頂けるのはもちろん大歓迎です!
参考になるなんて嬉しいお言葉です。
私もしばし人様の作例を見ては鱗ポロポロですよ(笑)
FSMの質問に複数回答が付いたときなんか面白いですよね。

おっと嬉しさの余り長文になってしまいました。
それでは、また良かったら遊びにきて下さい。ではでは!

  • お名前
  • タイトル
  • メールアドレス
  • URL
  • パスワード

ブログ内検索

アーカイブ

最新コメント

[01/20 NONAME]
[01/16 NONAME]
[12/30 NONAME]
[12/13 NONAME]
[12/01 NONAME]

プロフィール

バナー

HN:奈々(なな)
RPGツクールVXAceを中心に製作を行っています。 スクリプト、イラスト、ドット絵など広くちょこちょこ手を出していますので、 できる範囲で他のツクーラーさんのお手伝いができたらなと思っています。