生成されたイベントが複数の特定イベントの中から一番近いイベントに自立移動する方法を知りたいです。
例えば「花粉」というイベントが、複数ある「花」というイベントの中から一番近い「花」に向かって自立移動し、「花」に触れると消滅するイメージです。
もし分かる方がいましたら、どうかご教授お願いします。
複数の特定イベントに自立移動するイベント作成(解決済み)
- hannta029310
- 記事: 6
- 登録日時: 2017年9月04日(月) 22:51
Re: 複数の特定イベントに自立移動するイベント作成
こんばんは!
まず、以下のコードをjsファイルとして保存してプラグイン管理画面から取り込んでみてください。
次に自律移動のスクリプトから以下を実行してください。(nameはイベント名に置き換えてください)
こうすることでマップ内の指定した名称のイベントの中から最も近い位置にあるイベントに向かって移動します。
まず、以下のコードをjsファイルとして保存してプラグイン管理画面から取り込んでみてください。
コード: 全て選択
(function() {
'use strict';
Game_Character.prototype.moveTowardNearestCharacter = function(name) {
var character = this.getNearestCharacter(name);
if (character) {
this.moveTowardCharacter(character);
}
};
Game_Character.prototype.getNearestCharacter = function(name) {
var distance = Infinity;
var character = null;
$gameMap.events().forEach(function(event) {
if (event === this || event.event().name !== name) {
return;
}
var distanceToEvent = this.deltaXFrom(event.x) + this.deltaYFrom(event.y);
if (distanceToEvent < distance) {
character = event;
distance = distanceToEvent;
}
}, this);
return character;
};
})();
次に自律移動のスクリプトから以下を実行してください。(nameはイベント名に置き換えてください)
コード: 全て選択
this.moveTowardNearestCharacter('name');
こうすることでマップ内の指定した名称のイベントの中から最も近い位置にあるイベントに向かって移動します。
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30
[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30
[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
- hannta029310
- 記事: 6
- 登録日時: 2017年9月04日(月) 22:51
Re: 複数の特定イベントに自立移動するイベント作成
>トリアコンタンさん
jsファイルまで作っていただきありがとうございます!
問題なく近い位置のイベントに移動はしたのですが、、、
一番最初に移動を開始したイベントが指定したイベントAに、
自立移動スクリプトを実行している他のイベントも、イベントAより近いイベントを無視してイベントAに向かって移動してしまいます。
原因は何なのでしょうか…?イベントをコピーしているのが問題なのでしょうか…
jsファイルまで作っていただきありがとうございます!
問題なく近い位置のイベントに移動はしたのですが、、、
一番最初に移動を開始したイベントが指定したイベントAに、
自立移動スクリプトを実行している他のイベントも、イベントAより近いイベントを無視してイベントAに向かって移動してしまいます。
原因は何なのでしょうか…?イベントをコピーしているのが問題なのでしょうか…
Re: 複数の特定イベントに自立移動するイベント作成
すみません!
確認したところ処理が一部間違ってました。
正しくは以下の通りです。
確認したところ処理が一部間違ってました。
正しくは以下の通りです。
コード: 全て選択
(function() {
'use strict';
Game_Character.prototype.moveTowardNearestCharacter = function(name) {
var character = this.getNearestCharacter(name);
if (character) {
this.moveTowardCharacter(character);
}
};
Game_Character.prototype.getNearestCharacter = function(name) {
var distance = Infinity;
var character = null;
$gameMap.events().forEach(function(event) {
if (event === this || event.event().name !== name) {
return;
}
var distanceToEvent = Math.abs(this.deltaXFrom(event.x)) + Math.abs(this.deltaYFrom(event.y));
if (distanceToEvent < distance) {
character = event;
distance = distanceToEvent;
}
}, this);
return character;
};
})();
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30
[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30
[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
- hannta029310
- 記事: 6
- 登録日時: 2017年9月04日(月) 22:51
Re: 複数の特定イベントに自立移動するイベント作成
ありがとうございます、思った通りの動作になりました!