UE4:一人称と三人称の切り替えのBluePrintの作り方
tどうも僕です。
一人称と三人称の視点切り替えを作りました。
下の動画です。
UE4 一人称・3人称の切り替え FPS/3rd - YouTube
一応自分が作り方忘れてしまいそうなのでブログにまとめます。
1人称と三人称の視点の切り替えを作ろう!
(今回はカメラを2つ使ったやり方だよ!)
GTAVの視点切り替えは多分、キャラクターをスポーンしてるわけじゃなくスケルトンメッシュだけが変わってると考察したのでこの方法で作っていきます。
今回はUE4のテンプレートである、ブルーマン先生とFPSテンプレートのみを使用して作っています。
そして3人称のテンプレートからMycharacterを持ってきます。
やり方はこちらから
[UE4] 他プロジェクトからアセットを移動させる方法 | historia Inc - 株式会社ヒストリア
そしてスケルトンメッシュでブルーマン先生を呼び出し位置を変え、
三人称用のカメラを設置します。
コンポーネントの置き方はこのような感じです。
ゲーム起動時3人称視点から始めたいため以下の設定をしていきます。
FirstPersonCameraとFPSmeshのAuto Activateのチェックを取ります。
そしてFPS、3人称用のカメラのUse Pawn Control Rotationにチェックを入れます。
デフォルトから
そして[Orient Rotation to Movement]にチェックを入れ、
Use Controller Rotation のチェックを外します。
そして、BluePrintのグラフに戻りMovement inputを以下のように変えます。
そして、ConstructionScriptでFPSのスタティックメッシュを非表示にします。
[Set Hidden in Game]ノードを設置しNew Hiddenにチェックを付けます。
(Mesh 1PはFPSMeshです。次辺りから名前が変わってます。すみません)
これで起動すると、
三人称で動いた!次はKey入力で1人称に変更するBluePrintを記述していきます
一人称に変えよう!
この試作を作ってた時に、あまりにも無計画で作っていて以下のようになったので
関数を使ってわかりやすくしていきます。(反省
まず、関数を作成します。名前をFPSと3rdにします。
今回は[F]Keyを押すと切り替わるようにするため、FKeyのノードを設置し、FlipFlopノードとつなげます。(FlipFlop:入力の奇数回がA、偶数回がBに出力される)
そして以下のように設置します。とってもシンプル!
これで一回目押すとFPSになり2回目押すと三人称に戻るようになります。
関数FPSを作っていこう!
まずシーケンスを設置しスケルトンメッシュが切り替わるようにします。
これで実行してみると
そして2つ目のシーケンスにはカメラを切り替えます。
ActivateとDeactivateノードを使用します。
今回は3人称視点のカメラを使用不可にしFPSのカメラをアクティブにするとで以下のように設置します。
そして3つ目にはUse Controller RotationのYawとPitchをセットしチェックを付け、Orient Rotation to Movementをセットします(チェックはつけない
これの真逆を関数3rdに設置していきます。
すると
Fを押す
が!!!
FPS視点で下を向いた状態で三人称視点に戻ると
やばいね・・・・
ということで、Meshを切り替えた時にアクターを回転させます。
まずゲーム起動時にキャラクターのTransform情報をセットします。
ConstuctionScriptで[Get Actor transform]を設置し、Transform型の変数を作成しセットします。
そして、関数3rdのSet Hidden In Gameの後にSet Actor Rotationを設置し、Transformも持ってきてBreak TransformしRotation情報だけ取り出します。そしてBreakRotでPitchとRollだけ持ってきてMakeRotにつなげ、Set Actor locationにつなげます。
なぜわざわざBreakRotするのかと思われますが、このままつなげた場合、
この向きで三人称視点に戻ろうとすると
ブルーマン先生が横を向いてるのです。
なのでブルーマン先生の向きを合わせるために、アクターの向き情報を取得してブルーマン先生にブチ込む必要があるのです。なので、
[Get Actor rotation]ノードからBreakRotでYaw情報だけを抜き出し先ほどのMake Rotにつなげます。
すると
この状態で三人称視点に戻ると
ちゃんと向きがあってる
なぜか突然CrossHairが現れたので消します。消します。謎です。
(HUDからテクスチャーをクリアします。)
そして、このままだと三人称視点でも球が発射されてしまうので、ブランチ(if)を使用します。
Event GraphのSpawn ProjectileのInputActionFireの後にブランチを設置しFlipFlopのis Aにつなげます。するとFPS時のみ球が発射するようになりました。
大体完成しました。
しかし、まだブルーマン先生のみ後ろを向いた状態でFを押しても
正面方向になってしまっているので、この対処ができ次第また更新したいと思います。(誰か教えてください
文章的に分かりづらい所があるかも知れませんが、申し訳ないです。
以上
正直、これじゃインパクトにかけるのでカメラを一つだけ使い、カメラを動かして視点を切り替えるBluePrintを作りました。
UE4:カメラを動かして一人称と3人称を切り替え - YouTube
まだちょっと変なので頑張ります。