【Unityゲーム開発】 LookAt関数でカメラスムーズに切り替える方法

こんにちは。今回はLookAt関数でカメラの切り替えをスムーズに行う方法を紹介します。
LookAt関数は特定のオブジェクトの方向を向かせる関数です。

 

もくじ

デモ
・通常の切り替え
・スムーズに切り替え
C#スクリプト

 

デモ

通常の切り替え

通常のLookAtの切り替えを行うと上記のように、カクついた動きになります。
ちょっとかっこ悪いですね。

スムーズに切り替え

スムーズに切り替えが出来ました。
上記のような切り替えはVector3.Lerpを使用して行っています。

次にスクリプトを紹介します。

C#スクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GameManager : MonoBehaviour {
    public GameObject _camera;     //カメラのゲームオブジェクト

    public GameObject[] targetObjects; //ターゲットのオブジェクト

    public GameObject lookAtTarget;   //LookAt用空オブジェクト

    Vector3 defaultPosition;      //LookAtの初期位置

    Vector3 target;          //ターゲットの位置

    public float speed;         //ターゲットの切り替えスピード


    float time = 0.0f;

    bool lookOK = false;
    // Use this for initialization
    void Start () {

        defaultPosition = lookAtTarget.transform.position;
    }
	
	// Update is called once per frame
	void Update () {
        _camera.transform.LookAt(lookAtTarget.transform.position);

        if (lookOK) 
        {
            if (time > 1.0f)
            {
                lookOK = false;
                time = 0f;
            }
            else
            {
                lookAtTarget.transform.position = Vector3.Lerp(defaultPosition, target, time);
                time += Time.deltaTime * speed;
            }

        }

    }

    public void Button(int num)//ターゲットオブジェクトの切り替え
    {
                defaultPosition = lookAtTarget.transform.position;
                target = targetObjects[num].transform.position;
                lookOK = true;
    }

}

 

speedで切り替えの時間を調節できます。

便利なのでぜひ活用してください。

Unityの勉強方法はこちら

Unityのスクールはこちら

エンジニアスクール

Follow me!

  • カツヤ
  • 世界放浪系ゲームディベロッパー

    Unityでゲーム開発。VR/ARの開発をしています。

    クリエイターとして常に面白い物を。好奇心旺盛に生きる事がモットーです。

    法政大学卒業→ドイツ留学→ゲーム開発会社勤務→フリーランス
    アプリリリース合計6本。