ページ 11

【解決済み】スクリプトで複数のイベントの向きと位置を戻す方法について

Posted: 2023年1月27日(金) 01:47
by しぐにゃも
お世話になります。
スクリプトを使用し、複数のイベントの向きを戻したいです。

スクリプト:
for(var i = 2; i <= 4; i ++){
$gameMap.event( i ).locate( $dataMap.events[ i ].x , $dataMap.events[ i ].y);
}


これを使うと位置が戻りました。
が、向きが戻りません。
image-03.gif
image-03.gif (225.28 KiB) 閲覧された回数 1380 回
そこで、こちらに書き換えました。

スクリプト:
for(var i = 2; i <= 4; i ++){
$gameMap.event( i ).locate( $dataMap.events[ i ].x , $dataMap.events[ i ].y);
 $gameMap.event( i ).setDirection( $dataMap.event[ i ].direction());
}


$gameMap.event( i ).setDirection( value );で向きを設定。

valueで$dataMap.event[ i ].direction()を使用しイベントの初期の向きにしようとしました。

が、なぜかタイプエラー(Type Error ・ cannot read property of undefined)が出てきました。
MZ2.png
MZ2.png (33.65 KiB) 閲覧された回数 1380 回
このエラーの解決法が分からず困っております。
もしよろしければ、ご回答お願い致します。
MZ1.png

Re: スクリプトで複数のイベントの向きと位置を戻す方法について

Posted: 2023年1月27日(金) 10:34
by 剣崎 宗二
単純な文字抜けかと。

コード: 全て選択

$dataMap.event[ i ].direction()
event→ events
sが抜けていたように見えます。

Re: スクリプトで複数のイベントの向きと位置を戻す方法について

Posted: 2023年1月27日(金) 12:34
by Plasma Dark
確かに $dataMap が持つのは events ですが、イベントの定義そのものが直接向きを持っているわけではありません。

イベントの向きは、最初に有効なページに設定された画像の向きによって初期化されます。 (Game_Event.prototype.setupPageSettings 参照)
初期化された向きは _originalDirection に保持されているので、イベントの向きを元に戻すのであれば

コード: 全て選択

const event = $gameMap.event(i);
event.setDirection(event._originalDirection);
こう書けます。

Re: スクリプトで複数のイベントの向きと位置を戻す方法について

Posted: 2023年1月27日(金) 12:57
by しぐにゃも
ご回答ありがとうございます。

こちらですべて、上手く行きました。

コード: 全て選択

for(var i = 2; i <= 4; i ++){
    $gameMap.event( i ).locate( $dataMap.events[ i ].x , $dataMap.events[ i ].y);    
    const event = $gameMap.event(i);
    event.setDirection(event._originalDirection);
}
ありがとうございます。

ーーーーー

それと、$dataMap.events[ i ].direction()にすると、
「Type Error ・ $dataMap.events[ i ].direction is nof a function」が表示されてました。

RPGツクール、スクリプトリファレンス「442」で向きの取得を見ると"s"無し。
他の「369」などのマップイベントの配列を見ると情報が複数あるので"s"が書かれてる。
なので、$dataMap.eventの"s"無しが正解かと思い込んでました。
https://tkool.jp/mz/plugin/javascript/s ... medate.pdf
image-01.jpg
image-01.jpg (45.42 KiB) 閲覧された回数 1341 回
が、そもそも$dataMapには向きの情報が無く、 events で合ってたのですね…。

ーーーーー

いろいろ勉強になりました。
本当にありがとうございます。