僕の私のUnrealな日々

UE4のBluePrintを使って小さなギミックを作ったりしてます。ブログを通じて情報共有ができたらなと思います。

UE4:一人称と三人称の切り替えのBluePrintの作り方

tどうも僕です。

 

 

 

一人称と三人称の視点切り替えを作りました。

下の動画です。


UE4 一人称・3人称の切り替え FPS/3rd - YouTube

 

 

 

一応自分が作り方忘れてしまいそうなのでブログにまとめます。

 

 

1人称と三人称の視点の切り替えを作ろう!

(今回はカメラを2つ使ったやり方だよ!)

 

GTAVの視点切り替えは多分、キャラクターをスポーンしてるわけじゃなくスケルトンメッシュだけが変わってると考察したのでこの方法で作っていきます。

 

今回はUE4のテンプレートである、ブルーマン先生とFPSテンプレートのみを使用して作っています。

 

まずFPSテンプレートを持ってきて名前をFPSに変えます。

f:id:Bussan_dayo:20150217161201p:plain

 

 

そして3人称のテンプレートからMycharacterを持ってきます。

やり方はこちらから


[UE4] 他プロジェクトからアセットを移動させる方法 | historia Inc - 株式会社ヒストリア

 

そしてスケルトンメッシュでブルーマン先生を呼び出し位置を変え、

f:id:Bussan_dayo:20150217162911p:plain

三人称用のカメラを設置します。

f:id:Bussan_dayo:20151013152624p:plain

 

コンポーネントの置き方はこのような感じです。

f:id:Bussan_dayo:20151013152645p:plain

 

ゲーム起動時3人称視点から始めたいため以下の設定をしていきます。

FirstPersonCameraとFPSmeshのAuto Activateのチェックを取ります。

f:id:Bussan_dayo:20150217163305p:plain

 

そしてFPS、3人称用のカメラのUse Pawn Control Rotationにチェックを入れます。

f:id:Bussan_dayo:20150217163500p:plain

f:id:Bussan_dayo:20150217163503p:plain

 

デフォルトから

そして[Orient Rotation to Movement]にチェックを入れ、

f:id:Bussan_dayo:20150217163705p:plain

Use Controller Rotation のチェックを外します。

f:id:Bussan_dayo:20150217163757p:plain

 

そして、BluePrintのグラフに戻りMovement inputを以下のように変えます。

f:id:Bussan_dayo:20151013152736p:plain

 

そして、ConstructionScriptでFPSのスタティックメッシュを非表示にします。

[Set Hidden in Game]ノードを設置しNew Hiddenにチェックを付けます。

f:id:Bussan_dayo:20151013152748p:plain

(Mesh 1PはFPSMeshです。次辺りから名前が変わってます。すみません) 

 

これで起動すると、

f:id:Bussan_dayo:20150217164218p:plain

三人称で動いた!次はKey入力で1人称に変更するBluePrintを記述していきます

 

一人称に変えよう!

この試作を作ってた時に、あまりにも無計画で作っていて以下のようになったので

f:id:Bussan_dayo:20151013152801p:plain

関数を使ってわかりやすくしていきます。(反省

 

まず、関数を作成します。名前をFPSと3rdにします。

 

今回は[F]Keyを押すと切り替わるようにするため、FKeyのノードを設置し、FlipFlopノードとつなげます。(FlipFlop:入力の奇数回がA、偶数回がBに出力される)

 

そして以下のように設置します。とってもシンプル!

f:id:Bussan_dayo:20151013152812p:plain

 これで一回目押すとFPSになり2回目押すと三人称に戻るようになります。

 

関数FPSを作っていこう!

 まずシーケンスを設置しスケルトンメッシュが切り替わるようにします。

 

f:id:Bussan_dayo:20151013152822p:plain

 

これで実行してみると

f:id:Bussan_dayo:20150217165425p:plain

 

 

 そして2つ目のシーケンスにはカメラを切り替えます。

ActivateとDeactivateノードを使用します。

 

今回は3人称視点のカメラを使用不可にしFPSのカメラをアクティブにするとで以下のように設置します。

f:id:Bussan_dayo:20151013152852p:plain

 

そして3つ目にはUse Controller RotationのYawとPitchをセットしチェックを付け、Orient Rotation to Movementをセットします(チェックはつけない

f:id:Bussan_dayo:20151013152901p:plain

 

 これの真逆を関数3rdに設置していきます。

f:id:Bussan_dayo:20151013152952p:plain

 

 すると

f:id:Bussan_dayo:20150217170716p:plain

 Fを押す

f:id:Bussan_dayo:20150217170739p:plain

 

が!!!

 

FPS視点で下を向いた状態で三人称視点に戻ると

f:id:Bussan_dayo:20150217170839p:plain

 

f:id:Bussan_dayo:20150217170906p:plain

 

やばいね・・・・

 

ということで、Meshを切り替えた時にアクターを回転させます。

 

 

まずゲーム起動時にキャラクターのTransform情報をセットします。

ConstuctionScriptで[Get Actor transform]を設置し、Transform型の変数を作成しセットします。

f:id:Bussan_dayo:20151013153037p:plain

 

そして、関数3rdのSet Hidden In Gameの後にSet Actor Rotationを設置し、Transformも持ってきてBreak TransformしRotation情報だけ取り出します。そしてBreakRotでPitchとRollだけ持ってきてMakeRotにつなげ、Set Actor locationにつなげます。

f:id:Bussan_dayo:20151013153049p:plain

なぜわざわざBreakRotするのかと思われますが、このままつなげた場合、

この向きで三人称視点に戻ろうとすると

f:id:Bussan_dayo:20150217171449p:plain

ルーマン先生が横を向いてるのです。

f:id:Bussan_dayo:20150217171510p:plain

 

なのでブルーマン先生の向きを合わせるために、アクターの向き情報を取得してブルーマン先生にブチ込む必要があるのです。なので、

 

[Get Actor rotation]ノードからBreakRotでYaw情報だけを抜き出し先ほどのMake Rotにつなげます。

f:id:Bussan_dayo:20151013153114p:plain

 

すると

この状態で三人称視点に戻ると

f:id:Bussan_dayo:20150217171902p:plain

 

ちゃんと向きがあってる

f:id:Bussan_dayo:20150217171923p:plain

 

なぜか突然CrossHairが現れたので消します。消します。謎です。

f:id:Bussan_dayo:20150217172227p:plain

(HUDからテクスチャーをクリアします。)

 

そして、このままだと三人称視点でも球が発射されてしまうので、ブランチ(if)を使用します。

 

Event GraphのSpawn ProjectileのInputActionFireの後にブランチを設置しFlipFlopのis Aにつなげます。するとFPS時のみ球が発射するようになりました。

f:id:Bussan_dayo:20151013153133p:plain

 

 

大体完成しました。

しかし、まだブルーマン先生のみ後ろを向いた状態でFを押しても

f:id:Bussan_dayo:20150217172945p:plain

 

f:id:Bussan_dayo:20150217172949p:plain

正面方向になってしまっているので、この対処ができ次第また更新したいと思います。(誰か教えてください

 

文章的に分かりづらい所があるかも知れませんが、申し訳ないです。

 

 

以上

 

正直、これじゃインパクトにかけるのでカメラを一つだけ使い、カメラを動かして視点を切り替えるBluePrintを作りました。


UE4:カメラを動かして一人称と3人称を切り替え - YouTube

まだちょっと変なので頑張ります。

 

 

unrealbussan.hatenablog.com