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

アバター
ねこちゃ
記事: 13
登録日時: 2018年9月12日(水) 10:40
連絡を取る:

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

投稿記事by ねこちゃ » 2018年10月06日(土) 16:57

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

tubo
記事: 34
登録日時: 2017年10月11日(水) 16:29
お住まい: 兵庫県
連絡を取る:

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

投稿記事by tubo » 2018年10月06日(土) 19:58

コード: 全て選択

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が大きいものを取得します
方向等は考慮されません
アバター
ねこちゃ
記事: 13
登録日時: 2018年9月12日(水) 10:40
連絡を取る:

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

投稿記事by ねこちゃ » 2018年10月06日(土) 22:05

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

“MV:質問” へ戻る