読者です 読者をやめる 読者になる 読者になる

素人プログラマの日記

C#,C++,Unity,UE4についてだらだら書きます。ブログ更新は気が向いたらやるスタイル

FirstPersonCamera Memo

Unity

どうも、今回はUnityのカメラワークについての内容を簡単に書いておこうと思う。今回のカメラの使い方は、飛行機のコックピットの視点、普通のFPS視点に使えるものだ。もともとは三人称視点用にソースを書いてたのだけども、一人称視点にハメたら案外しっくり来た(笑)マウスで操作するものだけど、マウス入力がないときはオブジェクトの動きに同期する。

using UnityEngine;
using System.Collections;

public class Sample : MonoBehaviour
{
    public Transform MovementObject; //cameraにアタッチ
    public float MouseMovementSpeed; //マウスの感度調整パラメータ
    public float ObjectDistance=0f;
    Vector3 pos;
  
    void Start()
    {  
        if (MovementObject == null) //cameraをセットしない場合
        {
            Debug.Log("PLEASE SET THE OBJECT");
            Application.Quit();
        }
    }
    private void Update()//マウス入力と視点の設定とか
    {
        var mouseX = Input.GetAxis("MouseX") * Time.deltaTime * MouseMovementSpeed; //MouseXAxis
        var mouseY = Input.GetAxis("MouseY") * Time.deltaTime * MouseMovementSpeed; //MouseYAxis

        var lookAt = MovementObject.position + pos; 

        transform.RotateAround(lookAt, Vector3.up, mouseX);

        transform.RotateAround(lookAt, transform.right, mouseY);

        transform.position = lookAt - transform.forward * ObjectDistance;

        transform.LookAt(lookAt); 
    }
}

PCスペックが低い人はUpdateをFixedUpdateにしてみるといいかもしれない。