ページ 11

【解決済み】斜め向きの条件分岐

Posted: 2016年12月19日(月) 02:00
by にいやん
条件分岐の中にプレイヤーの下、左、右、上の向き項目はあるのですが左上や右下を条件にすることは出来るのでしょうか?そもそもMVはデフォルトで斜め移動を実装していないので出来ないのでしょうか?

Re: 斜め向きの条件分岐

Posted: 2016年12月19日(月) 19:38
by まっつUP
にいやん様
お世話になります。

公式プラグインにも入っているYami_8DIR系統の斜め移動のプラグインを適用しているのでしょうか。
この場合は
Game_Player.prototype.processMoveByInput中にある
} else if (this.isMoveDiagonally(direction)) {
のすぐ次の行で引数directionの値を(変数等に)取得するようにすれば
最後にどの斜めの方向にユーザーの入力によって移動したかが分かると思います。
ただ、それ以外の方法で向きが変わった時はやはり取得できないと思います。
(僕にはこれくらいしか方法が思いつきませんでした。)

Yami_8DIR系統以外の斜め移動やそれに関係するプラグインを適用している場合は
その情報は提示しておいた方が良いでしょう。

Re: 斜め向きの条件分岐

Posted: 2016年12月20日(火) 01:23
by にいやん
まっつUPさん、返信ありがとうございます。
PixelDOG様のグラフィック変更斜め移動プラグインを使用して、イベント命令から特定の方向を向かせたいと思っていたのです。可能ならば今向いている方向(斜め)を条件分岐にして斜め1マス前にアイテムを落とすといったようなローグライクゲームのような動作をさせたかったのです。

こちらでもいろいろと試してみたいと思います。

Re: 斜め向きの条件分岐

Posted: 2016年12月20日(火) 07:20
by kurau
おはようございます。
試してみたのですが移動ルートの設定からの斜め移動には対応していないぽいですね。
ですが
向きの取得は
this.character(-1).direction()
向きの変更は
this.character(-1).setDirection(向かせたい方向の番号);
でできるようです。

Re: 斜め向きの条件分岐

Posted: 2016年12月20日(火) 09:19
by にいやん
kurauさん返信ありがとうございます。
プレイヤーやイベントの斜めの向き取得は今のところ出来ないみたいですね。
自分のできる範囲で試行錯誤していこうと思います。ありがとうございました。

Re: 斜め向きの条件分岐

Posted: 2016年12月20日(火) 18:10
by まっつUP
PixelDOG様のPD_8DirDashを導入してみたところ
プレイヤーの動作に関してはご希望の処理が可能になりそうです。
(プレイヤー以外のキャラクターの向きやそのイベントに関しては未調査です。)
以下のようにした場合の画面上の動きやコンソールへの出力結果を確認してみてください。

◆スクリプト:console.log($gamePlayer._direction)
◆移動ルートの設定:プレイヤー (飛ばす, ウェイト)
:        :◇スクリプト:this.setDirection(1);
◆スクリプト:console.log($gamePlayer._direction)

追記:上述のthis.setDirection(1)はプラグインによって斜めグラ画像を設定したプレイヤーまたはイベントを対象に
処理することを強く推奨します。一般的な歩行グラを設定している場合はエラー落ちはしないと思いますが
既に向いている方向のままだと思います。

追記:なんか変なこと書いてあったので修正しました。

Re: 斜め向きの条件分岐

Posted: 2016年12月20日(火) 20:51
by kurau
できますよと言う意味だったのですが、説明下手ですみません。

条件分岐スクリプトでthis.character(-1).direction() == 1のようにすれば左下を向いているかを判定できます。
1:左下 2:下 3:右下 4:左 6:右 7:左上 8:上 9:右上 に対応しています。
またthis.character(-1)の-1の部分がイベントIDを対象にしており、-1を指定した場合はプレイヤーを意味します。
さらにスクリプトでthis.character(-1).setDirection(1);と指定すれば指定したイベント(-1なのでプレイヤー)が左下を向きます。
上記に加えて移動ルートのスクリプトから記述する方法場合は少し書き方が変わり
this.setDirection(1);←は移動ルートで指定したイベント(プレイヤー)の向きを左下に変更できます。

Re: 斜め向きの条件分岐

Posted: 2016年12月20日(火) 21:18
by にいやん
まっつUPさん、kurauさん、スクリプトの詳細ありがとうございます。

こちらで確認したところ向きの取得から斜め方向への前進、後退が出来ました。
細部まで教えていただいてありがとうございました。