サードパーソンプロジェクトを使用しています。
ThirdPersonCharacterBPを複製し、複製したBPにNextCharacterというTagを付け、マップに配置。
複製元に、下の画像の処理を書き加えました。
(ゲーム開始から3秒後に、複製したBPにプレイヤーが切り替わる処理です。)
しかし、プレイヤーを切り替えた際にControl Rotationが初期化?されてしまい、
カメラの向きが初期化(キャラの真後ろ)されてしまいます。
それを避けるべく、下の画像の処理で一時的に対処するようにしています。
(プレイヤーを切り替える前にControl Rotationを取得。プレイヤーを切り替えた後にControl Rotationを移行するようにしてます。)
しかし、この方法を採っても、Control Rotationが初期化?自体は対処できていませんので、プレイヤーを切り替えた一瞬だけ、どうしてもカメラがガクついてしまいます。
(マウス移動によるカメラ回転を激しく行っているときに切り替えると、ガクつくのがよく分かるかと思います。逆にカメラ回転を一切していないとガクつきが確認できません。)
長文で申し訳ありません。要はプレイヤーを切り替えたときにControl Rotationが初期化?されてしまう現象をどうにかしたいと考えてます。
何かよい方法はありませんでしょうか?
デフォルトのPlayerControllerは、Possessした際に自動でCameraTargetを新しいPawnのものに切り替える実装がされているようです。
PawnをPossessし直した際に、Camera位置・対象の変更も手動で行うのは利便性が悪いため、デフォルトでこのような実装になっていると思われます。
解決にはつながらないかもしれませんが、使えそうな設定を考えましたので、以下を試してみてください。
まず新しくPlayerControllerを作成してください(既にある場合はそれでOKです)
そのPlayerControllerの設定から Auto Manage Active Camera Target
のチェックを外します
その後、現在のBPの一番最後( SetControlRotation
のあと)に、 Set View Target With Blend
でカメラビューの切り替えを行います(添付画像はそこそこ簡略化しています)
BlendTime
は0でもOKですが、個人的には0.1秒ぐらい入れておいたほうが見た目的に良いかな、と思います。
回答ありがとうございます。
PlayerControllerを作成し設定。Set View Target With Blendノードを入れて試してみましたがうまくいきませんでした。
ThirdPersonCharacterBPのカメラ自体を別アクターにし、Set View Target With Blendでカメラアクターを指定。
ThirdPersonCharacterBPのコントローラーの回転をカメラアクターに移行する設定をしたプロジェクトを作成しました。
この方法自体はこちらの方のブログ内容を参考にしています。
このプロジェクトでも同様の問題が発生するため、参考のためにアップロードします。
(プロジェクトを立ち上げた後、ゲーム開始。数秒後カメラアクターにコントローラーを渡し、その一秒後にコントローラーが元の持ち主「ThirdPersonCharacterBP」に戻されます。その戻した瞬間にカメラがほんの一瞬だけガクつきます。ゲーム開始後、カメラを一切動かしてないとガクつきが確認できません。)
PossessとSetControlRotationの間(コントローラーがThirdPersonCharacterBPに行き、カメラ向きを修正する間)で、微妙に処理がラグが発生している?と現在考えてます。
しかし、代替となる手段が思いつきません。ラグ?を発生させないのがベストなんですが…
長々と申し訳ありません。よろしくお願いします。
何をどこまでしたのかがわかりません。
複数のアプローチを取ったようですが、区別してもらえると助かります。
あと、アップローダーを利用するのは構いませんが、
ダウンロードできるかどうか確かめてからのほうが良いでしょう。
ラグ、というのがどのレベルで気になっているのかが一切伝わらないので回答し辛いですが、
カメラの制御にこだわるのであれば、 Set View Target With Blend
などでカメラを切り替える方法ではなく、カメラそのものをプログラムで独立制御する他ありません。
ラグのレベルに関しては言葉にし辛いので映像としてアップロードしましたが…確かにコメントを見直すと分かりにくいですね。アップローダーの確認もそうですが、申し訳ありません。
アドバイスを元に、Set View Target With Blendを最初から利用しない方法を模索しようかと思います。
二度目になりますが、回答ありがとうございました!
先程今更ながら気づきましたが、DLのパスワードを書き込むのを忘れてますね…何やってるのでしょうか本当に。今更で申し訳ありません。