ページ 11

【解決済み】イベントの自律移動でスクリプトを使って乱数を取得し、条件分岐で向きを変えたい

Posted: 2023年4月19日(水) 20:59
by ブリサバ
閲覧ありがとうございます。
件名の通り、
「イベントの自律移動タイプをカスタムにし、移動ルートでスクリプトを用いて乱数を取得、乱数の値が一定以下の場合向きを変える」
(イメージではGBソフト「ゼルダの伝説 夢をみる島」の店主の動きを簡略化(プレイヤーの位置を反映しない)したものを想定しています)

といったイベントを作成したいと思い、下記のように記述しました。

◇スクリプト(こちらは動作確認済み)
$gameVariables.setValue(20,Math.floor( Math.random()*100 ) )
◇スクリプト
if($gameVariables.value(20) <= 10){
 this.character(0).forceMoveRoute({ "list":[{"code":17},{"code":0}],"repeat":false}) } else{
 this.character(0).forceMoveRoute({ "list":[{"code":18},{"code":0}],"repeat":false})
}
(自律移動のスクリプトでは改行出来ないので一行にまとめて記述していますが、見やすいように改行しています)

しかしゲームを実行すると、

"TypeError:this.character is not a function"

と表示されてしまいゲームが止まってしまいました。

試しにイベント内容の方で同様の記述をすると「乱数10以下の場合のみ左を向く」が問題なく動作しました。
どのように変えると自律移動の移動ルート上で動作するのか、教えて頂けると幸いです。

スクリプト初心者で拙い質問かもしれませんが、よろしくお願いいたします。

Re: イベントの自律移動でスクリプトを使って乱数を取得し、条件分岐で向きを変えたい

Posted: 2023年4月19日(水) 22:12
by 一般ピープル
こんにちは。

残念ながらその記法はイベントコマンドのスクリプトから移動ルートを設定するときのものです。
移動ルート内のスクリプトから実行する場合は、以下のようにします。

コード: 全て選択

if($gameVariables.value(20) <= 10){this._direction = 4;}else{this._direction = 6;}
this._directionに代入する値は、テンキーの方向キーに対応しており
2(下)
4(左)
6(右)
8(上)
となっています。

お試しください。

Re: イベントの自律移動でスクリプトを使って乱数を取得し、条件分岐で向きを変えたい

Posted: 2023年4月19日(水) 22:17
by ブリサバ
一般ピープル さんが書きました:残念ながらその記法はイベントコマンドのスクリプトから移動ルートを設定するときのものです。
そうだったんですね、その辺りの仕様を知らなかったので勉強になりました!
お教えいただいた通り記述したところ問題なく動作するのを確認出来ました、ありがとうございます!
また何かありましたらお手数ですがよろしくお願いいたします。