ページ 11

変数で指定した先が通行可能かどうかを判定したいです。

Posted: 2024年12月14日(土) 12:13
by mochikun
ツクールMZを使用しています。
指定した座標が通行可能かを判定したいと思い、試しに以下のようなイベントを作成しました。

イベントのトリガーは並列処理
条件分岐 決定キーがトリガーされている
 変数1にプレイヤーのX座標、変数2にプレイヤーのX座標、変数3にプレイヤーの向きを代入
 条件分岐 スクリプト欄に$gameMap.isPassable($gameVariables.value(1), $gameVariables.value(2), $gameVariables.value(3))と記入
  文章の表示 OK
 それ以外の場合
  文章の表示 NG

この状態でテストプレイを行い、マップの壁に向かって決定キーを押してもOKと文章が表示されています。
スクリプトの解釈が間違っているのでしょうか?

このようなところで質問をするのは初めてです。
質問の仕方に問題がありましたら申し訳ありません。

Re: 変数で指定した先が通行可能かどうかを判定したいです。

Posted: 2024年12月14日(土) 12:27
by WTR
プレイヤーがいる座標が通行可能かを返すので
プレイヤーが壁にめり込んでいる状態ならそのスクリプトで false になるはずです。

壁に向かって壁が通行可能かを判定するなら壁の座標を指定する必要がありますね。

たぶん勘違いのもとになってるのは第三引数の direction ですね。
プレイヤーの x, y から direction 方向の1マス先が移動可能か、ではなく
プレイヤーの x, y において direction 方向に移動可能か、です
わかりにくいですね

タイルセットの設定で通行(4方向)ってありますよね。あれです。
ほとんどのタイルは4方向すべてに移動可能に設定されているので direction がなんであれ移動できる判定されます。
梯子とか崖とか方向が制限されたタイルにおいては direction が効きます。

Re: 変数で指定した先が通行可能かどうかを判定したいです。

Posted: 2024年12月14日(土) 12:37
by mochikun
そういうことなのですね。解釈を誤っていました。
プレイヤーの前方を指定して同じ処理をしたところ、壁の前でNGと表示させることができました。

迅速な回答に感謝いたします。
ありがとうございました!