どうも。
凄く簡単にではありますが、
指定したキャラクターが指定したキャラクターの範囲内にいるかどうかを
チェックするスクリプトを作成いたしました。
コード: 全て選択
isInRange = function( chara1Id, chara2Id, range ) {
var chara1X = $gameMap._interpreter.character( chara1Id ).x;
var chara1Y = $gameMap._interpreter.character( chara1Id ).y;
var chara2X = $gameMap._interpreter.character( chara2Id ).x;
var chara2Y = $gameMap._interpreter.character( chara2Id ).y;
return ( chara2X - range <= chara1X )
&& ( chara2X + range >= chara1X )
&& ( chara2Y - range <= chara1Y )
&& ( chara2Y + range >= chara1Y );
};
条件分岐にてisInRangeに下記引数を指定して実行します。
引数1:チェック対象1のイベントID
引数2:チェック対象2のイベントID
引数3:チェック範囲距離(3×3の場合は3、5×5の場合は5を指定する。)
※条件分岐にスクリプトを指定したいのかな?と思ったので、このような形でisInRangeを定義しています。
※チェック対象にプレイヤーを指定する場合は、チェック対象1のイベントIDに-1を指定してください。
※チェック対象1とチェック対象2の指定を逆にしても結果に違いは無いと思います。
> イベントを中心にして3×3マスや5×5マスの範囲にプレイヤーが入った(またはイベントから入った)
> 時に条件分岐が発動するようなスクリプトはありませんでしょうか?
この意味がよく分かりませんでしたが、
もしこれが「イベントの範囲内にプレイヤーが入った瞬間に処理を実行する」という意味だった場合は、
上記イベントの内容を並列処理で実行すればいいのかなと思います。