件名の通りですが、プレイヤーの最も近くにいるイベントのIDとマップ座標を取得する方法についてご質問させて頂きます。
まず、過去の記事で以下のスクリプトを見つけました。
これにより、近くのイベントIDを取得する方法は分かったのですが、これをさらに改良して、イベントのメモ欄に【エネミー】と書いてあるイベントだけを対象にすることは可能でしょうか?let vid = 94; // 取得する変数番号
let min = 15; // 最大距離
let get = null;
$gameMap.events().forEach(function(event){
let distance = $gameMap.distance($gamePlayer.x,$gamePlayer.y,event.x,event.y);
if (min >= distance) { min = distance; get = event); }
});
$gameVariables.setValue(vid, get ? get.eventId() : 0);
やりたいこととしては、近くの敵に魔法で雷を落とすというものですが、今のままだとアイテムや階段も対象に含まれてしまい、アイテムの近くで魔法を唱えると敵よりもアイテムに雷が落ちるという状況です。
イベントのメモ欄に【エネミー】と書いてある場合、そいつだけを対象にIDを取得する方法はありますでしょうか?
それと、上記のコードでは最大距離が15となっておりますが、これはプレイヤーからX,Y軸の15マス離れたところから、ひし形で計算されていると思うのですが、これを正方形にする方法はありますか?
また、取得したイベントIDのマップ座標を取得する方法もお教え頂ければ幸いです。