ページ 11

【解決済み】条件分岐で「イベントから見たプレイヤーの方向」を取得したい

Posted: 2017年5月03日(水) 11:42
by コットン豆腐
いつもお世話になっております。
移動ルートの「プレイヤーの方へ向く」「プレイヤーに近づく」のように、
条件分岐で「イベントから見たプレイヤーの方向」を判定することは可能でしょうか?
Game_Character.moveTowardCharacterあたりに判定している記述自体は見つけたのですが、
浅い知識の為どのように関数化すれば条件分岐から呼び出せるのかが検討も付かず……

ご教授よろしくお願い致します。

Re: 条件分岐で「イベントから見たプレイヤーの方向」を取得したい

Posted: 2017年5月03日(水) 12:20
by 奏ねこま
考えてみました。

Game_Character.prototype.turnTowardCharacterのコードを参考にして、

コード: 全て選択

Game_Character.prototype.turnTowardCharacter = function(character) {
    var sx = this.deltaXFrom(character.x);
    var sy = this.deltaYFrom(character.y);
    if (Math.abs(sx) > Math.abs(sy)) {
        this.setDirection(sx > 0 ? 4 : 6);
    } else if (sy !== 0) {
        this.setDirection(sy > 0 ? 8 : 2);
    }
};
こんな感じのスクリプトを作成(イベントから見たプレイヤーの向きを変数#0001に入れるスクリプト)。

コード: 全て選択

$gameVariables.setValue(1,
    (function(character) {
        var sx = this.deltaXFrom(character.x);
        var sy = this.deltaYFrom(character.y);
        if (Math.abs(sx) > Math.abs(sy)) {
            return (sx > 0 ? 4 : 6);
        } else if (sy !== 0) {
            return (sy > 0 ? 8 : 2);
        }
    }.bind($gameMap.event(this.eventId()), $gamePlayer))()
);
上記をイベントコマンドの「スクリプト」で実行すると、変数#0001に向きを入れます。
下なら2、左なら4、右なら6、上なら8になります。
変数を#0001以外にしたい場合は、一行目の「setValue(1,」の部分の数字を変更してください。

Re: 条件分岐で「イベントから見たプレイヤーの方向」を取得したい

Posted: 2017年5月03日(水) 13:32
by コットン豆腐
>>奏ねこま 様
ご返答ありがとうございます!
成程、無理に1行で収めるための関数化なんて考えずにゲーム変数に代入してあげればよかったのですね……!
難しく考えすぎておりました、的確なコードをありがとうございます!

色々応用が効きそうな考え方を知れてありがたい限りです。どうもありがとうございました!