【Unity】プレイヤーの回転に影響されない追従カメラを作る方法
プレイヤーにカメラを追従させたい場合、一番手っ取り早いのは、カメラオブジェクトをプレイヤーオブジェクトの子にすることです。
しかし、この方法だと、もしもプレイヤーがボールなどの形状で、進む際に回転する場合、カメラも回転してしまい、大変なことになってしまいます。(以下のgif画像のように)
そんな場合はスクリプトを作成して対応します。
目次
完成動作
プレイヤー(Sphere)が回転してもカメラは回転しない。
作り方(動画)
作り方(ブログ)
1.シーンに各オブジェクトを配置
1-1.以下のようにPlaneを床にして、Sphere(赤い球)をプレイヤーとして配置し、カメラがプレイヤーを良い感じに映すようにする。
※プレイヤー(Sphere)を動かす方法は以下を参照
(床(Plane)を斜めにし、ShereにRigidbodyを付けて転がすだけでも良い)
2.カメラがプレイヤーを追従するスクリプトを作成
2-1.CameraFollowTarget.csという名前のスクリプトを作成して、以下のコードを記載する。
using UnityEngine;
public class CameraFollowTarget : MonoBehaviour
{
[SerializeField]
[Tooltip("追従させたいターゲット")]
private GameObject target;
private Vector3 offset;
// Start is called before the first frame update
void Start()
{
// ゲーム開始時点のカメラとターゲットの距離(オフセット)を取得
offset = gameObject.transform.position - target.transform.position;
}
/// <summary>
/// プレイヤーが移動した後にカメラが移動するようにするためにLateUpdateにする。
/// </summary>
void LateUpdate()
{
// カメラの位置をターゲットの位置にオフセットを足した場所にする。
gameObject.transform.position = target.transform.position + offset;
}
}
3.カメラにCameraFollowTargetスクリプトをアタッチ
3-1.カメラにCameraFollowTargetスクリプトをアタッチ
3-2."Target"プロパティにカメラを追従させたいターゲットをアタッチ
完成
これでプレイヤー(Sphere)の回転にカメラが影響されることなく追従できる。
ディスカッション
コメント一覧
まだ、コメントがありません