【解決】隊列メンバーの集合のアニメの無効化

返信する
ヒグラシ
記事: 94
登録日時: 2019年8月03日(土) 21:00

【解決】隊列メンバーの集合のアニメの無効化

投稿記事 by ヒグラシ »

隊列メンバーを集合するときにフォロワーが主人公に向かって歩きますがこれを
アニメーションなしで一瞬で行いたいです。

瞬時にフォロワーを主人公の位置にもっていくことは可能でしょうか?
尚、合わせて移動ルートでのやり方も教えてもらえると嬉しいです
最後に編集したユーザー ヒグラシ [ 2020年5月06日(水) 20:46 ], 累計 1 回
アバター
ムノクラ
記事: 2118
登録日時: 2018年2月23日(金) 11:41
連絡する:

Re: 隊列メンバーの集合のアニメの無効化

投稿記事 by ムノクラ »

ヒグラシ さんが書きました:隊列メンバーを集合するときにフォロワーが主人公に向かって歩きますがこれを
アニメーションなしで一瞬で行いたいです。

瞬時にフォロワーを主人公の位置にもっていくことは可能でしょうか?
尚、合わせて移動ルートでのやり方も教えてもらえると嬉しいです

コード: 全て選択

◆変数の操作:#0001 X = プレイヤーのマップX
◆変数の操作:#0002 Y = プレイヤーのマップY
◆変数の操作:#0003 Map = マップID
◆場所移動:{Map} ({X},{Y}) (フェード: なし)
移動ルートで使えそうなのはスクリプトくらいみたいなので、上記をコモンイベントにして実行すれば可能だと思います。
this.setupChild($dataCommonEvents[コモンイベントID].list, 対象イベントID)

サンプルコード(コモンイベントIDが3のコモンイベントを呼び出す,対象イベント指定なし)

this.setupChild($dataCommonEvents[3].list, 0)
引用元
http://rpgmaker-script-wiki.xyz/common_mv.php
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
Plasma Dark
記事: 736
登録日時: 2020年2月08日(土) 02:29
連絡する:

Re: 隊列メンバーの集合のアニメの無効化

投稿記事 by Plasma Dark »

瞬時にフォロワーを主人公の位置にもっていくことは可能でしょうか?
単にフォロワーを非表示にするだけであれば、隊列歩行をOFFにするだけです。
が、プレイヤーに重なって表示させたいという場合はスクリプトを書いて対応するしかありません。
尚、合わせて移動ルートでのやり方も教えてもらえると嬉しいです
移動ルートの設定はフォロワーを制御するための方法をスクリプト以外に提供していません。
わざわざ移動ルートの設定でフォロワーを動かしたいのはなぜでしょうか。

ムノクラさんの仰るように場所移動コマンドはフォロワーをプレイヤーと同じ座標に移動する効果があるので、それを使うのが一番楽だとは思います。
(移動ルートにこだわらなければ、スクリプトを書く必要すらありません)
ヒグラシ
記事: 94
登録日時: 2019年8月03日(土) 21:00

Re: 隊列メンバーの集合のアニメの無効化

投稿記事 by ヒグラシ »

ムノクラ様
Plasma Dark様

ご回答ありがとうございます。
実は以下のようなVX AceのスクリプトにあるのがMVでもないかなーなどと
思ってたんですがなかったので質問しました。
http://heptanas.mamagoto.com/Entry/138/

とりあえずムノクラ様の手法でやってみましたが
いい感じな動作にはなりましたがいくつか理想の動作にならない点が
あったのでお手数おかけして申し訳ないですが教えていただけないでしょうか?
プラグインはトリアコンタン様のDTextPicture及びNpcFollowerを入れています。

やりたいことというのはイベントを引っ張るという動作です。
具体的にはイベントAをキーボードのAボタンを押している間、
隊列歩行でついてくるようにしたいです。
入力判定スクリプトには'connect'が指定されていますが
これはInput.keyMapper[65] = 'connect';でAボタンに関連付けています。

このイベントAのページ1にはプライオリティは「通常キャラと同じ」で
トリガーに「並列処理」を指定しています。実行内容は以下のとおりです。
※キャラ画像はアクター2のものに設定してます。

コード: 全て選択

◆変数の操作:#0016 プレイヤー位置X = プレイヤーのマップX
◆変数の操作:#0017 プレイヤー位置Y = プレイヤーのマップY
◆変数の操作:#0019 connectイベント位置X = このイベントのマップX
◆変数の操作:#0020 connectイベント位置Y = このイベントのマップY
◆条件分岐:プレイヤー位置X ≠ connectイベント位置X
  ◆ピクチャの消去:#11
  ◆イベント処理の中断
  ◆
:分岐終了
◆条件分岐:プレイヤー位置Y ≠ connectイベント位置Y
  ◆ピクチャの消去:#11
  ◆イベント処理の中断
  ◆
:分岐終了
◆条件分岐:スクリプト:Input.isPressed('connect')
  ◆プラグインコマンド:NF_NPC追加 2 1
  ◆コモンイベント:隊列集合
  ◆隊列歩行の変更:ON
  ◆セルフスイッチの操作:A = ON
  ◆
:分岐終了
◆プラグインコマンド:D_TEXT \I[82]【Button A Push】引っ張る 32
◆ピクチャの表示:#11, なし, 左上 (0,0), (100%,100%), 255, 通常
このイベントAのページ2にはプライオリティは「通常キャラと同じ」で
トリガーに「並列処理」を指定しています。実行内容は以下のとおりです。
※条件にはセルフスイッチAを指定しています。

コード: 全て選択

◆変数の操作:#0016 プレイヤー位置X = プレイヤーのマップX
◆変数の操作:#0017 プレイヤー位置Y = プレイヤーのマップY
◆変数の操作:#0019 connectイベント位置X = $gamePlayer.followers()._data[0].x
◆変数の操作:#0020 connectイベント位置Y = $gamePlayer.followers()._data[0].y
◆条件分岐:スクリプト:!Input.isPressed('connect')
  ◆変数の操作:#0019 connectイベント位置X = プレイヤーのマップX
  ◆変数の操作:#0020 connectイベント位置Y = プレイヤーのマップY
  ◆セルフスイッチの操作:A = OFF
  ◆条件分岐:プレイヤーが下を向いている
    ◆移動ルートの設定:このイベント
    :        :◇下を向く
    ◆変数の操作:#0020 connectイベント位置Y -= 1
    ◆
  :分岐終了
  ◆条件分岐:プレイヤーが左を向いている
    ◆移動ルートの設定:このイベント
    :        :◇左を向く
    ◆変数の操作:#0019 connectイベント位置X += 1
    ◆
  :分岐終了
  ◆条件分岐:プレイヤーが右を向いている
    ◆移動ルートの設定:このイベント
    :        :◇右を向く
    ◆変数の操作:#0019 connectイベント位置X -= 1
    ◆
  :分岐終了
  ◆条件分岐:プレイヤーが上を向いている
    ◆移動ルートの設定:このイベント
    :        :◇上を向く
    ◆変数の操作:#0020 connectイベント位置Y += 1
    ◆
  :分岐終了
  ◆イベントの位置設定:このイベント, ({connectイベント位置X},{connectイベント位置Y})
  ◆プラグインコマンド:NF_NPC削除 1
  ◆隊列歩行の変更:OFF
  ◆
:分岐終了
コモンイベントの隊列集合には以下の実行内容を設定しています。
これはムノクラ様の仰られたとおりです。

コード: 全て選択

◆変数の操作:#0016 プレイヤー位置X = プレイヤーのマップX
◆変数の操作:#0017 プレイヤー位置Y = プレイヤーのマップY
◆変数の操作:#0015 プレイヤーMAPID = マップID
◆場所移動:{プレイヤーMAPID} ({プレイヤー位置X},{プレイヤー位置Y}) (フェード: なし)
この状態で実行するとAボタンを押しながらイベントに触れた時
プレイヤーがイベントを通り越してしまいます。

それとAボタンを離したときにイベントが一瞬前を向くので
このチラツキ動作も気になります。

上記2点の問題点を解決する方法はあるでしょうか?
組み方を直したほうがいいとかあれば教えてもらえると助かります。
質問内容からすこしずれてきてますがもしよければ回答もらえませんか?

※すみません。ページ1、2ともオプションにすり抜け設定してます(漏れてました)
アバター
Plasma Dark
記事: 736
登録日時: 2020年2月08日(土) 02:29
連絡する:

Re: 隊列メンバーの集合のアニメの無効化

投稿記事 by Plasma Dark »

この状態で実行するとAボタンを押しながらイベントに触れた時
プレイヤーがイベントを通り越してしまいます。
isPressedの条件を先に持ってきたほうが確実なんじゃないかと思います。
それとAボタンを離したときにイベントが一瞬前を向くので
このチラツキ動作も気になります。
前を向かせるようなイベントの書き方をしているように見えるのですが、イベントの位置を指定した後に向きを変えるだけではお望みの挙動にならないということでしょうか。
ヒグラシ
記事: 94
登録日時: 2019年8月03日(土) 21:00

Re: 隊列メンバーの集合のアニメの無効化

投稿記事 by ヒグラシ »

Plasma Dark様

isPressedの条件が先というのは以下のような感じでしょうか?
こうするとイベント処理が中断されないため、プレイヤーがイベントに
重ならなくてもフォロワーとしてついてくるようになってしまいます。
<追記>因みにすばやく方向キーを押して離した場合はプレイヤーがイベントを
追い越さずイベント上に重なるようです。

コード: 全て選択

◆変数の操作:#0016 プレイヤー位置X = プレイヤーのマップX
◆変数の操作:#0017 プレイヤー位置Y = プレイヤーのマップY
◆変数の操作:#0019 connectイベント位置X = このイベントのマップX
◆変数の操作:#0020 connectイベント位置Y = このイベントのマップY
◆条件分岐:スクリプト:Input.isPressed('connect')
  ◆プラグインコマンド:NF_NPC追加 2 1
  ◆コモンイベント:隊列集合
  ◆隊列歩行の変更:ON
  ◆セルフスイッチの操作:A = ON
  ◆
:分岐終了
◆条件分岐:プレイヤー位置X ≠ connectイベント位置X
  ◆ピクチャの消去:#11
  ◆イベント処理の中断
  ◆
:分岐終了
◆条件分岐:プレイヤー位置Y ≠ connectイベント位置Y
  ◆ピクチャの消去:#11
  ◆イベント処理の中断
  ◆
:分岐終了
◆プラグインコマンド:D_TEXT \I[82]【Button A Push】引っ張る 32
◆ピクチャの表示:#11, なし, 左上 (0,300), (100%,100%), 255, 通常
あともう一点のほうですが
私の説明が悪かったとしかいいようがなくすみません。
前を向くというのは方向キーを入力したほうの前ではなく
プレイヤー画像そのものが前向きという意味です。
つまり前というのはプレイヤーが下を向いているものを前と言ってしまいました。
よってボタンを離した直後にプレイヤー画像が下向きに一時的に変わってしまうということです。
語弊があり混乱させてしまいすみませんでした。

<追記>
イベントの位置を指定した後に向きを変えるとどうもボタンを離すことで
ページ1に変わってから一瞬プレイヤーが下向きになるのは
ページ1のデフォルトの向き設定に戻るからようです。
試しに他の向き(左向き)に設定して試したら一瞬左向きになりました。
つまりはページ2の実行内容にいるときページ1の向きをかえることが
できないのが問題な気がします。
ページ1にいってから向きを変えてたようでは間に合わないのですかね
アバター
Plasma Dark
記事: 736
登録日時: 2020年2月08日(土) 02:29
連絡する:

Re: 隊列メンバーの集合のアニメの無効化

投稿記事 by Plasma Dark »

isPressedの条件が先というのは以下のような感じでしょうか?
isPressed が真の時にももちろん、座標のチェックを行わないとお望みの挙動にならないとは思います。
◆プラグインコマンド:NF_NPC追加 2 1 の直前に座標比較の条件分岐を入れる、という意味です。

そして、isPressed が真の場合にスクリプトで

コード: 全て選択

console.log(`プレイヤー: ${$gameVariables.value(16)}, ${$gameVariables.value(17)}`);
console.log(`イベント: ${$gameVariables.value(19)}, ${$gameVariables.value(20)}`);
を実行するようにしてみれば、意図と違う値が出ている(座標を代入した変数の値が一致していない)ことがわかるはずです。
F12キーでdeveloper consoleを開き、consoleタブを見ながら、Aキーを押して近づいて、すり抜ける場合に何が起きているのかご確認ください。


念の為、このイベント以外で変数16, 17, 19, 20を書き換えていたりしませんよね。

イベントの位置を指定した後に向きを変えるとどうもボタンを離すことで
ページ1に変わってから一瞬プレイヤーが下向きになるのは
ページ1のデフォルトの向き設定に戻るからようです。
なるほど、これは確かにそうですね。
どうしても気になるようであれば、セルフスイッチによる切り替えではなく変数による切り替えにして、各向きの離した後の状態を別ページに作ってしまうのが良いんじゃないでしょうか。
ヒグラシ
記事: 94
登録日時: 2019年8月03日(土) 21:00

Re: 隊列メンバーの集合のアニメの無効化

投稿記事 by ヒグラシ »

Plasma Dark様

念の為、このイベント以外で変数16, 17, 19, 20を書き換えていたりしませんよね。
この件については書き換えてはいないはずです。

結局このイベントを越える件は仕様とすることにしました。
自分ではやはりよくわかりませんでした…
どうしても気になるようであれば、セルフスイッチによる切り替えではなく変数による切り替えにして、各向きの離した後の状態を別ページに作ってしまうのが良いんじゃないでしょうか。
向きごとにページを分けたらチラつかなくなりました。
ありがとうございました。

一応これでこの件は解決ということにさせていただきます。
引き続きありがとうございました。
返信する

“MV:質問”に戻る