初めて投稿させていただきます。
ヒンバスと申します。
this.character($gameVariables.value(6)).forceMoveRoute({
"list":[{"code":45,"parameters":
["this.moveStraight(this.findDirectionTo($gameVariables.value(3),$gameVariables.value(4)));"]},
{"code":0}],
"repeat":true,
"skippable":false})
this._character = this.character($gameVariables.value(6))
this.setWaitMode('route')
上記のように「変数6に代入されているIDのイベントを変数3、変数4に代入されたX軸Y軸に移動」という処理をさせたいのですが、移動自体は最後までするのですが、移動後に次の処理に進まず、操作ができなくなってしまいます(恐らくウェイトがかかりっぱなしになってしまっている?)
移動中はウェイトにして指定位置に移動後、次の処理する…という処理をさせるためにはどうしたらいいでしょうか?
お力添えいただけると幸いです
移動ルートの設定のスクリプトが上手くウェイトできません
Re: 移動ルートの設定のスクリプトが上手くウェイトできません
下記のイベントを組むことで解決できたと思います。ヒンバス さんが書きました:初めて投稿させていただきます。
ヒンバスと申します。
this.character($gameVariables.value(6)).forceMoveRoute({
"list":[{"code":45,"parameters":
["this.moveStraight(this.findDirectionTo($gameVariables.value(3),$gameVariables.value(4)));"]},
{"code":0}],
"repeat":true,
"skippable":false})
this._character = this.character($gameVariables.value(6))
this.setWaitMode('route')
上記のように「変数6に代入されているIDのイベントを変数3、変数4に代入されたX軸Y軸に移動」という処理をさせたいのですが、移動自体は最後までするのですが、移動後に次の処理に進まず、操作ができなくなってしまいます(恐らくウェイトがかかりっぱなしになってしまっている?)
移動中はウェイトにして指定位置に移動後、次の処理する…という処理をさせるためにはどうしたらいいでしょうか?
お力添えいただけると幸いです
コード: 全て選択
◆変数の操作:#0006 イベントID = 1
◆変数の操作:#0003 目標X = 10
◆変数の操作:#0004 目標Y = 5
◆ラベル:Start
◆スクリプト:this.character($gameVariables.value(6)).forceMoveRoute({
: : "list": [
: : { "code": 45, "parameters": ["this.moveStraight(this.findDirectionTo($gameVariables.value(3),$gameVariables.value(4)));"] },
: : ],
: : "repeat": false,
: : "skippable": false
: :});
◆変数の操作:#0011 現在X = this.character($gameVariables.value(6)).x;
◆変数の操作:#0012 現在Y = this.character($gameVariables.value(6)).y;
◆条件分岐:目標X ≠ 現在X
◆ラベルジャンプ:Start
◆
:分岐終了
◆条件分岐:目標Y ≠ 現在Y
◆ラベルジャンプ:Start
◆
:分岐終了
コード: 全て選択
this.character($gameVariables.value(6)).forceMoveRoute({
"list": [
{ "code": 45, "parameters": ["this.moveStraight(this.findDirectionTo($gameVariables.value(3),$gameVariables.value(4)));"] },
],
"repeat": false,
"skippable": false
});
rpg_objects.js 内の Game_Character.prototype.processMoveCommand に移動ルートのコードが書かれていて、45がスクリプトの実行であることを確認。
http://rpgmaker-script-wiki.xyz/moverout_mv.php
を参考に、完了時に{"code":0}を入れる必要がある。
しかし、wikiには繰り返しONの例がありませんでした。
そこで下記を実行したところ、どうやら「繰り返しONの中に{"code":0}が入っていても完了せずに繰り返し続けるらしい」ということが分かりました。
完了処理のコードは実行しているのも確認(console出力)しましたが、先に実行するだけで、リピートが永遠に終わらない事が根本的な原因のようです。
下記を実行してみると分かります。
コード: 全て選択
this.character($gameVariables.value(6)).forceMoveRoute({
"list": [{ "code": 1 }, { "code": 2 }, { "code": 0 }],
"repeat": true,
"skippable": false
});
this._character = this.character($gameVariables.value(6));
this.setWaitMode('route');
移動中のリピートを切る
一歩ずつイベント座標を取得
目的の座標と同一でなければ、次の一歩をさせる。同一であれば完了する
というような処理に分けて組んだのが冒頭のイベントです。
ツクールのスクリプトの行数が限られているため、この全てをJavaScriptで解決したければ、プラグインコマンドとしてプラグインを作成するのが現実的だと思います。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Re: 移動ルートの設定のスクリプトが上手くウェイトできません
こんにちは。
既に回答が付いているようでしたが、別の方法としてスクリプトだけで解決できる方法を載せて置こうと思います。
スクリプトのコードを
に置き換えることでリピートが自動で切れるようになると思います。
(evalの中で改行ができなかったので、スクリプト内のコードは1行で書く必要があります)
ご参考まで。
既に回答が付いているようでしたが、別の方法としてスクリプトだけで解決できる方法を載せて置こうと思います。
スクリプトのコードを
コード: 全て選択
this.character($gameVariables.value(6)).forceMoveRoute({
"list":[{"code":45,"parameters":
["this.moveStraight(this.findDirectionTo($gameVariables.value(3), $gameVariables.value(4))); this._moveRoute.repeat = !this.pos($gameVariables.value(3), $gameVariables.value(4));"]},
{"code":0}],
"repeat":true,
"skippable":false})
this._character = this.character($gameVariables.value(6));
this.setWaitMode('route');
(evalの中で改行ができなかったので、スクリプト内のコードは1行で書く必要があります)
ご参考まで。
---------------------------------------------------------------------------------------------
プラグイン置き場 : https://github.com/ste0/RPG-Maker-MV-Plugins
プラグイン置き場 : https://github.com/ste0/RPG-Maker-MV-Plugins
Re: 移動ルートの設定のスクリプトが上手くウェイトできません
なるほど!jp_asty さんが書きました:こんにちは。
既に回答が付いているようでしたが、別の方法としてスクリプトだけで解決できる方法を載せて置こうと思います。
スクリプトのコードをに置き換えることでリピートが自動で切れるようになると思います。コード: 全て選択
this.character($gameVariables.value(6)).forceMoveRoute({ "list":[{"code":45,"parameters": ["this.moveStraight(this.findDirectionTo($gameVariables.value(3), $gameVariables.value(4))); this._moveRoute.repeat = !this.pos($gameVariables.value(3), $gameVariables.value(4));"]}, {"code":0}], "repeat":true, "skippable":false}) this._character = this.character($gameVariables.value(6)); this.setWaitMode('route');
(evalの中で改行ができなかったので、スクリプト内のコードは1行で書く必要があります)
ご参考まで。
勉強になりました!
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Re: 移動ルートの設定のスクリプトが上手くウェイトできません
ムノクラ様、jp_asty様ご返信ありがとうございました!
ご教授頂いたスクリプトに変更してみたところ、思った通りの処理をすることができました!
お二人に助言いただきとても助かりました!本当にありがとうございました!
ご教授頂いたスクリプトに変更してみたところ、思った通りの処理をすることができました!
お二人に助言いただきとても助かりました!本当にありがとうございました!
Re: 移動ルートの設定のスクリプトが上手くウェイトできません
質問の中で、質問主でない者が質問をしてしまうマナー違反をお許しください。jp_asty さんが書きました:こんにちは。
既に回答が付いているようでしたが、別の方法としてスクリプトだけで解決できる方法を載せて置こうと思います。
スクリプトのコードをに置き換えることでリピートが自動で切れるようになると思います。コード: 全て選択
this.character($gameVariables.value(6)).forceMoveRoute({ "list":[{"code":45,"parameters": ["this.moveStraight(this.findDirectionTo($gameVariables.value(3), $gameVariables.value(4))); this._moveRoute.repeat = !this.pos($gameVariables.value(3), $gameVariables.value(4));"]}, {"code":0}], "repeat":true, "skippable":false}) this._character = this.character($gameVariables.value(6)); this.setWaitMode('route');
(evalの中で改行ができなかったので、スクリプト内のコードは1行で書く必要があります)
ご参考まで。
これって、意外と汎用性があると感じています。
(ランダムに動かしていたイベントが会話後に指定の場所へ移動するなど、ありがちだと思いますが、指定の場所に移動するために、ランダムに動かさないでいる人は多そうな気がします。)
で、プラグインコマンドにしようとしたら、「this」のところでエラーになってしまうのですが、どのように書き換えたら良いのでしょうか?
可能であれば、見本をいただければ(作っていただければ)幸いです。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Re: 移動ルートの設定のスクリプトが上手くウェイトできません
作成してみました。これって、意外と汎用性があると感じています。
(ランダムに動かしていたイベントが会話後に指定の場所へ移動するなど、ありがちだと思いますが、指定の場所に移動するために、ランダムに動かさないでいる人は多そうな気がします。)
で、プラグインコマンドにしようとしたら、「this」のところでエラーになってしまうのですが、どのように書き換えたら良いのでしょうか?
可能であれば、見本をいただければ(作っていただければ)幸いです。
コマンド一つで障害物を避けて目的地まで移動してくれるので、たしかに汎用性は高いかもしれません。
使用法はプラグインの説明欄を御覧ください。
---------------------------------------------------------------------------------------------
プラグイン置き場 : https://github.com/ste0/RPG-Maker-MV-Plugins
プラグイン置き場 : https://github.com/ste0/RPG-Maker-MV-Plugins
Re: 移動ルートの設定のスクリプトが上手くウェイトできません
ありがとうございます。jp_asty さんが書きました:作成してみました。これって、意外と汎用性があると感じています。
(ランダムに動かしていたイベントが会話後に指定の場所へ移動するなど、ありがちだと思いますが、指定の場所に移動するために、ランダムに動かさないでいる人は多そうな気がします。)
で、プラグインコマンドにしようとしたら、「this」のところでエラーになってしまうのですが、どのように書き換えたら良いのでしょうか?
可能であれば、見本をいただければ(作っていただければ)幸いです。
コマンド一つで障害物を避けて目的地まで移動してくれるので、たしかに汎用性は高いかもしれません。
使用法はプラグインの説明欄を御覧ください。
MoveXY.js
勉強させていただきます!
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
Re: 移動ルートの設定のスクリプトが上手くウェイトできません
中を拝見して、自分が何をミスしていたのか理解できました。作成してみました。
コマンド一つで障害物を避けて目的地まで移動してくれるので、たしかに汎用性は高いかもしれません。
使用法はプラグインの説明欄を御覧ください。
MoveXY.js
なんという…文字列の中に変数を書き込むという「動くわけない」ことをやっていました…
「また、thisの意味が分からないから、動かせないのか!」と思い込んでおりました。
勉強になりました。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。