いつもお世話になっております。
移動ルートの「プレイヤーの方へ向く」「プレイヤーに近づく」のように、
条件分岐で「イベントから見たプレイヤーの方向」を判定することは可能でしょうか?
Game_Character.moveTowardCharacterあたりに判定している記述自体は見つけたのですが、
浅い知識の為どのように関数化すれば条件分岐から呼び出せるのかが検討も付かず……
ご教授よろしくお願い致します。
【解決済み】条件分岐で「イベントから見たプレイヤーの方向」を取得したい
【解決済み】条件分岐で「イベントから見たプレイヤーの方向」を取得したい
最後に編集したユーザー コットン豆腐 on 2017年5月03日(水) 13:32 [ 編集 1 回目 ]
水面下でゲーム作ってます。
Re: 条件分岐で「イベントから見たプレイヤーの方向」を取得したい
考えてみました。
Game_Character.prototype.turnTowardCharacterのコードを参考にして、
こんな感じのスクリプトを作成(イベントから見たプレイヤーの向きを変数#0001に入れるスクリプト)。
上記をイベントコマンドの「スクリプト」で実行すると、変数#0001に向きを入れます。
下なら2、左なら4、右なら6、上なら8になります。
変数を#0001以外にしたい場合は、一行目の「setValue(1,」の部分の数字を変更してください。
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: 条件分岐で「イベントから見たプレイヤーの方向」を取得したい
>>奏ねこま 様
ご返答ありがとうございます!
成程、無理に1行で収めるための関数化なんて考えずにゲーム変数に代入してあげればよかったのですね……!
難しく考えすぎておりました、的確なコードをありがとうございます!
色々応用が効きそうな考え方を知れてありがたい限りです。どうもありがとうございました!
ご返答ありがとうございます!
成程、無理に1行で収めるための関数化なんて考えずにゲーム変数に代入してあげればよかったのですね……!
難しく考えすぎておりました、的確なコードをありがとうございます!
色々応用が効きそうな考え方を知れてありがたい限りです。どうもありがとうございました!
水面下でゲーム作ってます。