Help us understand the problem. What is going on with this article?

UE4でいい感じの2Dカメラを作る

はじめに


現在作っている2Dのパズルゲームを作っていて、いい感じの2Dカメラができたので紹介します。

具体的にどんなカメラかというと、

・独立したアクターで実装
・指定したポイント(アクター)へ追従させることができる
・なんかいい感じにふわっと追従してくれる(上の動画を参照してくださいw)
・カメラの移動範囲を指定できる

みたいな感じです。

作ってみる

1.PNG
1. まず、現在プレイヤーのクラスのコンポーネントで実装されているカメラを削除する。(削除しなくても動作しますが必要ないので消します)
2.PNG
2. 独立したカメラにするのでカメラ用のアクタークラスを作成します。
3.PNG
3. 作成したクラスのコンポーネントを上の画像のようにします。プレイヤーのクラスにあったものと同じ構造です。
4.PNG
4. BeginPlayイベントからこのように処理を作ります。SetViewTargetWithBlendノードを使用すると使うカメラを切り替えることができます。
5.PNG
5. 次に使用する変数を作成しておきます。TargetActorはActor型で、その他は全てfloat型です。
~Limmitは上下左右の移動できる範囲を座標で指定します。
AimSpeedはカメラが追従する速さです。
TargetActorは名前の通り追従する対象のアクターです。
6.PNG
6. 次にTickイベントからこのように処理を作ります。処理の流れとしては、

  • IsValidノードで対象のアクターがあるかを確認
  • そのアクターの座標を取得
  • Clampノードで移動範囲より外側に行かないように制御
  • VInterpToノードのCurrentにカメラの座標、Targetに対象のアクターの座標、DeltaTimeにTickイベントのDeltaSeconds、InterpSpeedに先程作成したAimSpeedを接続(AimSpeedはなくてもいいですが後から値を変える時に楽なので変数にしました)
  • SetActorLocationノードを使用して、VInterpToノードの戻り値の座標へ移動

となります。VInterpToノードのInterpSpeedについて少し注意点があり、数値が小さいほどゆっくり追従するようになりますが0の時は止まるのではなく対象のアクターの移動に合わせて動くようになります。(プレイヤーのクラスに実装されているカメラみたいな動き)

おまけ

移動範囲制限無しバージョン

7.PNG

2Dアクションゲームでよくある向いてる方向よりのカメラ

8.PNG
プレイヤーのクラスにカメラに追従させるためのクラスを追加してプレイヤーの前方に配置し、TargetActorにこのクラスを指定する。
9.PNG
↑ 向いている方向に寄ったカメラ

↓ が普通の状態のカメラ
10.PNG

おわりに

UE4ではプレイヤーのクラスにカメラが実装されていますが、UE4以外では独立して実装するのが一般的だそうです。また、独立しているため追従する対象を動的に変更することができるため、注視するような処理なども作りやすくなるかと思います。

Naotsun
C++とUE4と猫が好き!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした