Unity 실행시 마우스로 카메라 조작 예

6293 단어 C#Unity

개요



Unity 런타임의 마우스에 의한 카메라 조작 예를 기재합니다.

구현



객체 구조






스크립트


using UnityEngine;

public class CtrlView : MonoBehaviour
{
    [SerializeField] Transform TargetCam;
    [SerializeField] Transform ViewPoint;

    [SerializeField] float Angle_Speed = 0.5f;
    [SerializeField] float PosXY_Speed = 0.005f;
    [SerializeField] float PosZ_Speed = 5;

    Vector3 MousePos;

    void Update()
    {
        // マウスの移動量を取得
        var diff = MousePos - Input.mousePosition;
        MousePos = Input.mousePosition;

        if (Input.GetMouseButton(0))
        {
            // 左クリック(回転)
            var tmp = diff;
            diff.x = +tmp.y;
            diff.y = -tmp.x;
            ViewPoint.eulerAngles += diff * Angle_Speed;
        }
        else if (Input.GetMouseButton(1))
        {
            // 右クリック(移動)
            var tmp = diff;
            diff.x = -tmp.x;
            diff.y = +tmp.y;
            ViewPoint.position += diff * PosXY_Speed;
        }

        // スクロール(拡縮というか前後)
        var scroll = Input.GetAxis("Mouse ScrollWheel");
        var pos = TargetCam.localPosition;
        pos.z += scroll * PosZ_Speed;
        TargetCam.localPosition = pos;
    }
}

보충



스크립트는 같은 클래스명으로 파일을 작성해 그대로 copipe 하면, 어딘가 텍트우인 오브젝트에 첨부해, TargetCam에 조작하고 싶은 카메라, ViewPoint에 시점으로 하는 카메라의 부모 오브젝트를 설정하면 그대로 사용할 수 있습니다.
대상을 중심으로 카메라 어떻게 돌리면 좋을까? 라고 생각해 잘 모르는 계산하려고 생각하기도 한 적이 있었습니다만, 카메라를 오브젝트의 아이로 해 오브젝트를 돌리면 좋은 것은 아닌가? 라는 방법이 됩니다.
이용 장면은 많을 것 같은 생각이 듭니다만 기본적 지나? 탓인지, 별로 직구적인 예는 보이지 않기 때문에, 자신용으로서의 메모도 앞으로 기사로 했습니다.

좋은 웹페이지 즐겨찾기