ページ 11

【解決済み】一歩歩くと減る変数を作りたい

Posted: 2017年11月29日(水) 05:12
by 青猫_
たびたびお世話になっております、
一定の条件下でプレイヤーが特定の歩数歩くまで動かなくなるイベントを作りたかったのですが、
「硬直」変数を作り、その変数が「1より大きい場合」を出現条件とする空ページを最後に作成して、
硬直させる条件の方には「硬直変数=歩数」「硬直変数+3」の変数の変更を書き込み、
空ページの方は並列処理で「硬直変数に減算、歩数」の処理を書き込む事で、三歩分の硬直を作れるのでは無いか、
と踏んだのですが、うまく行きませんでした。
良く考えたら並列処理のページに減算を書き込んだら、歩かないでも減算が繰り返されてしまうわけですしね。

ググって見るとVXではスクリプトで「一歩歩くとある変数が減る」とできたようなのですが、
MVではそういったスクリプトはないのでしょうか?
もしくは歩数の変数取得から、上手い具合に歩数を計測できるでしょうか?
ご存知の方がいましたら、ご教授お願いします。

Re: 一歩歩くと減る変数を作りたい

Posted: 2017年11月29日(水) 08:31
by しぐれん
並列処理で変数を操作すると重くなることがあるのですが、ちょっとアドバイスを出します。
この場合、プレイヤーが移動したかどうかを監視する方法が確実です。

毎フレームプレイヤーの座標を監視し、変更があった場合に移動したとみなして変数を減らします。

Re: 一歩歩くと減る変数を作りたい

Posted: 2017年11月30日(木) 10:06
by 青猫_
>しぐれん様
アドバイスありがとうございます。
返事が遅れて申し訳ありません。

まずは「現在のX」「現在のY」「一つ前のX」「一つ前のY」という四つの変数を用意し、
コモンイベントの並列処理で、
変数の操作、「現在のX、Y」にマップ座標を取得、
条件分岐で「現在のX≠一つ前のX」「現在のY≠一つ前のY」を満たした場合、
硬直変数を-1し、さらにそれぞれ「一つ前のX、Y」に現在のマップ座標を取得、という処理を行う事で、
「一歩歩く毎に減る変数」を再現できました。

問題は複数マス一気に進むようなギミックや、その場で一歩分のターンを消費する足踏みやアイテムの使用などの
硬直変数の処理ですが、そこらへんはそれぞれ変数の処理ができると思いますので、改めてイベント内容を用意します

ありがとうございました!

Re: 【解決済み】一歩歩くと減る変数を作りたい

Posted: 2017年12月02日(土) 11:40
by terunon
解決済みとのことですが、ご参考になれば。。

変数の操作に現在の歩数を取得する機能があります。
イベントの動きをストップさせ始めたときの歩数を取得しておき、その歩数と現在歩数の差をとればよりシンプルに実装できると思います。

もし並列処理が重いようであれば、
ループさせる処理内容全体を条件分岐
スクリプト: $gamePlayer.isMoving()
で囲ってください。
プレイヤーが移動している間のみ判定を行うようになり不要なイベント更新を減らせますー。

Re: 【解決済み】一歩歩くと減る変数を作りたい

Posted: 2017年12月02日(土) 14:50
by ジャム
>青猫_様
>seea様
>スギスズキ様

回答ありがとうございました。
解決しました!

Re: 【解決済み】一歩歩くと減る変数を作りたい

Posted: 2017年12月02日(土) 16:25
by 青猫_
>terunon様

あ、そうか。
並列処理の最中に減算入れたからいけなかったんで、
現在の歩数を代入して、硬直開始時の歩数との差がいくつ以上になったら解除とか、
逆に硬直解除までの歩数を設定して、現在の歩数を代入した変数が一致したら解除とかにすれば良かったんですね。
座標を監視する方法はまた別の設定で利用できたんで、うまく併用したいと思います。
毎フレーム見張るのは重たいかな、とも思っていたので、移動時のみ起動するスクリプトはありがたいです。
アドバイスありがとうございます。

>ジャム様
トピック間違えてますよ :arrow: