ページ 11

複数の特定イベントに自立移動するイベント作成(解決済み)

Posted: 2017年9月12日(火) 16:03
by hannta029310
生成されたイベントが複数の特定イベントの中から一番近いイベントに自立移動する方法を知りたいです。

例えば「花粉」というイベントが、複数ある「花」というイベントの中から一番近い「花」に向かって自立移動し、「花」に触れると消滅するイメージです。

もし分かる方がいましたら、どうかご教授お願いします。

Re: 複数の特定イベントに自立移動するイベント作成

Posted: 2017年9月14日(木) 23:06
by トリアコンタン
こんばんは!
まず、以下のコードを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');
こうすることでマップ内の指定した名称のイベントの中から最も近い位置にあるイベントに向かって移動します。

Re: 複数の特定イベントに自立移動するイベント作成

Posted: 2017年9月19日(火) 14:47
by hannta029310
>トリアコンタンさん

jsファイルまで作っていただきありがとうございます!
問題なく近い位置のイベントに移動はしたのですが、、、

一番最初に移動を開始したイベントが指定したイベントAに、
自立移動スクリプトを実行している他のイベントも、イベントAより近いイベントを無視してイベントAに向かって移動してしまいます。

原因は何なのでしょうか…?イベントをコピーしているのが問題なのでしょうか…

Re: 複数の特定イベントに自立移動するイベント作成

Posted: 2017年9月19日(火) 23:04
by トリアコンタン
すみません!
確認したところ処理が一部間違ってました。
正しくは以下の通りです。

コード: 全て選択

(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;
    };
})();

Re: 複数の特定イベントに自立移動するイベント作成

Posted: 2017年9月20日(水) 23:20
by hannta029310
ありがとうございます、思った通りの動作になりました!