[解決済]対象のイベントを、変数に代入されている座標に誘導したいのですが

アバター
レティラナティス
記事: 66
登録日時: 2016年6月08日(水) 09:19
お住まい: すぎのこ村

[解決済]対象のイベントを、変数に代入されている座標に誘導したいのですが

投稿記事by レティラナティス » 2016年6月09日(木) 19:23

ダークソウルシリーズの『望郷』や『誘い骸骨』のように、アイテムやスキルを使用すると、プレイヤーが立っていた座標に向けて、周囲に存在するイベントが近づいて行く機能が欲しいのです。

デフォルト状態のイベントの、自立移動の『カスタム』→『移動ルート』では、直接目的の座標に歩かせるように入力しておくか、プレイヤーに近づいていく機能だけで、変数で指定された座標に向かって歩かせる方法がありません。

具体的にはシンボルエンカウントで、『1.機能を使用する』
→『2.プレイヤーの現在のMAP座標(x軸.Y軸)を変数(A.B)に代入し、変数(A.B)に代入されたMAP座標に目印となるアニメーションorピクチャを表示、最後に対象にしたいイベント群を管理するスイッチをONにする』
→『3.スイッチの操作で機能の対象になったイベント(敵)が、変数(A.B)に代入されたMAP座標に向かって近づいていく』
というのを作りたいのです。

が、『機能の対象になったイベント(敵)が、変数(A.B)に代入されたMAP座標に向かって近づいていく』という部分で、躓いてしまっています。

コレを実現させるためには、何らかのスクリプトコードで実行が可能でしょうか?
もしくは、コレに近い挙動が可能なプラグインに、お心当たりはありませんでしょうか?
最後に編集したユーザー レティラナティス on 2016年6月11日(土) 12:14 [ 編集 1 回目 ]

アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: 対象のイベントを、変数に代入されている座標に誘導したいのですが

投稿記事by トリアコンタン » 2016年6月11日(土) 06:16

誘導したい座標に、透明イベントを配置した上で、自立移動の『カスタム』→『移動ルート』→『スクリプト』で以下を実行すれば多分いけると思います。

コード: 全て選択

// 指定したイベントに近づく
this.moveTowardCharacter($gameMap.event(透明イベントのID));


こちらは参考です。

コード: 全て選択

// 指定したイベントから遠ざかる
this.moveAwayFromCharacter($gameMap.event(透明イベントのID));

// 指定したイベントの方を向く
this.turnTowardCharacter($gameMap.event(透明イベントのID));

// 指定したイベントの逆を向く
this.turnAwayFromCharacter($gameMap.event(透明イベントのID));


なお、上記スクリプトは指定したIDのイベントが存在しない場合エラーになります。
どうしてもエラーを回避したい場合、以下のように記述してください。
対象イベントが存在しない場合は、その場から動かなくなります。

コード: 全て選択

// 指定したイベントに近づく
this.moveTowardCharacter($gameMap.event(透明イベントのID) || this);
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
アバター
レティラナティス
記事: 66
登録日時: 2016年6月08日(水) 09:19
お住まい: すぎのこ村

Re: 対象のイベントを、変数に代入されている座標に誘導したいのですが

投稿記事by レティラナティス » 2016年6月11日(土) 12:06

返信ありがとうございます。

つまり全てのMAP内に、誘導用の同一IDの透明イベントを事前に用意し、機能を実行した際に『イベントの位置設定』で自分のいる座標に強制移動させて、指定したイベントに近づくスクリプトコードを実行すれば良いのですね。
アバター
レティラナティス
記事: 66
登録日時: 2016年6月08日(水) 09:19
お住まい: すぎのこ村

Re: 対象のイベントを、変数に代入されている座標に誘導したいのですが

投稿記事by レティラナティス » 2016年6月11日(土) 12:13

と言うことで、こうなりました。

『効果判定用のステート』を1つと、『起動用のアイテムorスキル』を1つ、『管理用』と『実働用』のスイッチ2つ、『現在のプレイヤーのX座標』と『現在のプレイヤーのY座標』を格納する変数を2つ、『準備用』と『実働用』のコモンイベントを2つ、用意します。そして、『機能対象にしたいイベント』を配置したいMAP全てに、『同一のイベントIDを持つ、誘導用のイベント』を用意します。

○効果持続用のステート
名前は任意(無しでOK)で、『歩数で解除』に効果を持続させたい歩数を入力します。

○起動用のアイテムorスキル
使用効果にて、『コモンイベント:準備用コモンの起動』、『ステートの付与:効果持続用のステートを100%付与』を設定します。
(※1)全回復を実行した際、このステートも消えてしまうので、それが嫌な場合はステートでの管理ではなく、変数にて『現在までの歩数』と『現在の歩数の総数』の差で管理してください。

○準備用コモン トリガー:なし
◆変数:『現在のプレイヤーのX座標』に、現在のプレイヤーのX座標を代入
◆変数:『現在のプレイヤーのY座標』に、現在のプレイヤーのY座標を代入
◆イベントの位置設定:『誘導用のイベント』のX軸とY軸を、上で設定した変数で指定
◆『管理用のスイッチ』をONに

○実働用コモン トリガー:並列処理 スイッチ:管理用のスイッチ
◆条件分岐:特定のアクターが『効果持続用のステート』になっている。
 ◆スイッチ操作:『実働用のスイッチ』をON
:それ以外のとき
 ◆スイッチ操作:『実働用のスイッチ』をOFF
:分岐終了
(※2)条件判定をステートではなく、歩数の差でする場合は条件設定を変更してください。

○各MAPの『同一のイベントIDを持つ、誘導用のイベント』
画像も内容も無しでOKですが、2ページ目に『実働用のスイッチ』がON時に出現するようにして、誘導地点が解るように画像を設定しても良いかもしれません。

○各MAPの『機能対象にしたいイベント』
『実働用のスイッチ』がON時に、自立移動の『カスタム』で『スクリプト:this.moveTowardCharacter($gameMap.event(『同一のイベントIDを持つ、誘導用のイベント』のID) || this);』を記入します。

●実働内容
1.スキル/アイテムで『準備用のコモン』を起動すると同時に、アクターに『効果持続用のステート』を付与します。

2.『準備用のコモン』内で『現在プレイヤーが存在している座標』を取得し、各MAPに配置した『同一のイベントIDを持つ誘導用のイベント』を、取得した座標に瞬間移動させ、『実働用のコモン』を起動させるスイッチ『効果持続用のステート』がONになります。

3.条件判定に設定されているアクターが、『効果持続用のステート』の状態である限り、『機能対象にしたいイベント』は『誘導用のイベント』に向かって進み続けます。

4.アクターの『効果持続用のステート』が解除された時点で、『機能対象にしたいイベント』は機能対象になる前のイベント内容に戻ります。
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: [解決済]対象のイベントを、変数に代入されている座標に誘導したいのですが

投稿記事by トリアコンタン » 2016年6月11日(土) 14:21

すべてのマップで同じIDの透明イベントを作成するのは少し面倒なので、いくつか代替案を提示します。
解決済みとのことですので、ご参考程度ということで。

指定した名称と一致するイベントに近づけたい場合(複数一致する場合はIDが小さい方が優先される)

コード: 全て選択

this.moveTowardCharacter($gameMap.events().filter(function(event){return event.event().name === 'イベント名称'})[0] || this);


指定した座標[9:15]に近づけたい場合(やや強引なコードなので、最悪他のプラグインと競合する可能性があります)

コード: 全て選択

this.moveTowardCharacter({x:9, y:15});


座標を変数の値から取得する場合

コード: 全て選択

this.moveTowardCharacter({x:$gameVariables.value(a), y:$gameVariables.value(b)});
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
アバター
レティラナティス
記事: 66
登録日時: 2016年6月08日(水) 09:19
お住まい: すぎのこ村

Re: [解決済]対象のイベントを、変数に代入されている座標に誘導したいのですが

投稿記事by レティラナティス » 2016年6月11日(土) 17:34

追伸ありがとうございます。

なるほど、指定座標にエフェクトを出せるのと、既に96MAP全てに処置してしまったので、今回はこのままで行きますが……こういうコードもあるのですね……とても勉強になります。

“MV:質問” へ戻る