ページ 11

【解決済み】実機から一番近いイベントIDを取得する方法ありませんか?

Posted: 2018年10月06日(土) 16:57
by ねこちゃ
アクションRPGを製作中なのですが一番近い敵イベントに対して魔法を撃つ動作をしたく方法を考えているのですがいい案が思いつきません
指定範囲内(表示されている画面内くらい)で実機に一番近いイベントIDを変数に格納するいい方法ありませんか?
よろしくおねがいします

Re: 実機から一番近いイベントIDを取得する方法ありませんか?

Posted: 2018年10月06日(土) 19:58
by tubo

コード: 全て選択

let vid = 22; // 取得する変数番号
let min = 20; // 最大距離
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が大きいものを取得します
方向等は考慮されません

Re: 実機から一番近いイベントIDを取得する方法ありませんか?

Posted: 2018年10月06日(土) 22:05
by ねこちゃ
返信ありがとうございます!
Javascriptほとんどわかっていないので動作の原理を読み解くのに時間がかかりましたがなんとなくですが把握することができました
この様な方法があったのですね自分が考えていた方法と全く違いスマートなやり方に目からウロコです
自分のゲーム用に少し改造し導入してみたところ完全にうまく動作をしているのを確認しました
(敵イベントとそれ以外のイベントを区別するように改造)
おかげさまでこれでアクション動作の幅が広がること間違いありません
この度はありがとうございました!また何かありましたらよろしくおねがいします :D