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

アバター
にいやん
記事: 218
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

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

投稿記事by にいやん » 2016年12月19日(月) 02:00

条件分岐の中にプレイヤーの下、左、右、上の向き項目はあるのですが左上や右下を条件にすることは出来るのでしょうか?そもそもMVはデフォルトで斜め移動を実装していないので出来ないのでしょうか?
最後に編集したユーザー にいやん on 2019年5月12日(日) 23:48 [ 編集 1 回目 ]

アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 斜め向きの条件分岐

投稿記事by まっつUP » 2016年12月19日(月) 19:38

にいやん様
お世話になります。

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

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

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
にいやん
記事: 218
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

Re: 斜め向きの条件分岐

投稿記事by にいやん » 2016年12月20日(火) 01:23

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

こちらでもいろいろと試してみたいと思います。
アバター
kurau
記事: 30
登録日時: 2016年4月16日(土) 23:30

Re: 斜め向きの条件分岐

投稿記事by kurau » 2016年12月20日(火) 07:20

おはようございます。
試してみたのですが移動ルートの設定からの斜め移動には対応していないぽいですね。
ですが
向きの取得は
this.character(-1).direction()
向きの変更は
this.character(-1).setDirection(向かせたい方向の番号);
でできるようです。
アバター
にいやん
記事: 218
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

Re: 斜め向きの条件分岐

投稿記事by にいやん » 2016年12月20日(火) 09:19

kurauさん返信ありがとうございます。
プレイヤーやイベントの斜めの向き取得は今のところ出来ないみたいですね。
自分のできる範囲で試行錯誤していこうと思います。ありがとうございました。
アバター
まっつUP
記事: 1155
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

Re: 斜め向きの条件分岐

投稿記事by まっつUP » 2016年12月20日(火) 18:10

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

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

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

追記:なんか変なこと書いてあったので修正しました。
最後に編集したユーザー まっつUP on 2016年12月21日(水) 17:43 [ 編集 1 回目 ]
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
kurau
記事: 30
登録日時: 2016年4月16日(土) 23:30

Re: 斜め向きの条件分岐

投稿記事by kurau » 2016年12月20日(火) 20:51

できますよと言う意味だったのですが、説明下手ですみません。

条件分岐スクリプトで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);←は移動ルートで指定したイベント(プレイヤー)の向きを左下に変更できます。
アバター
にいやん
記事: 218
登録日時: 2016年7月02日(土) 00:38
お住まい: 地獄4丁目西のゴミ置き場
連絡を取る:

Re: 斜め向きの条件分岐

投稿記事by にいやん » 2016年12月20日(火) 21:18

まっつUPさん、kurauさん、スクリプトの詳細ありがとうございます。

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

“MV:質問” へ戻る