マイペースなプログラミング日記

x86エミュレータやFPGA、WebGLにお熱なd-kamiがマイペースに書くブログ

CoD4のステージ開始時のようなカメラを目指す

Call of Duty 4の最初のステージの上から視点が降りてくるようなやつを目指して作成した。

手順はMainCameraとは別のカメラを作成して、MainCameraの上空に設置する。向きはRotationのxを90にしておく。そして以下のスクリプトを作成して、適当にGameObjectに貼る。それからmainCameraにMainCameraを設定し、fallCameraに先程作成したカメラを設定すればOK

using UnityEngine;
using System.Collections;

public class CameraScript : MonoBehaviour {
    public GameObject mainCamera;
    public GameObject fallCamera;

    void Start(){
        mainCamera.camera.enabled = false;
        fallCamera.camera.enabled = true;
    }
    
    void Update(){
        if(!mainCamera.camera.enabled){
            fall();
        }
    }
    
    private void fall(){
        Vector3 from = fallCamera.transform.position;
        Vector3 to = mainCamera.transform.position;
        Vector3 frotation = fallCamera.transform.localEulerAngles;
        Vector3 trotation = mainCamera.transform.localEulerAngles;
        
        if(Vector3.Distance(from, to) > 0.3f){
            Vector3 position = Vector3.Lerp(from, to, 0.05f);
            fallCamera.transform.position = position;
        }else if(Mathf.Abs(frotation.x - trotation.x) > 3.0f){
            fallCamera.transform.Rotate(-3.0f, 0.0f, 0.0f);
        }else{
            mainCamera.camera.enabled = true;
            fallCamera.camera.enabled = false;
        }
    }
}