마우스를 이용해 중심축을 기준으로 카메라를 회전시키는 클래스입니다. (키보드 제어 추가)
빈 게임 오브젝트를 생성한 다음 스크립트를 적용하고 카메라를 하위에 넣으면 됩니다.
CameraController

카메라 조작: 마우스, WSAD(전후좌우), EQ(상하)

CameraController.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour {
    private Vector2 startPos;

    // 초기화 함수
    void Start ()
    {
    }
   
    // 프레임마다 계속 호출
    void Update ()
    {
        // 마우스 이동
        if(Input.GetMouseButtonDown(0))
        {
            startPos = Input.mousePosition;
        }
        else if(Input.GetMouseButton(0))
        {
            float mouseMoveX = Input.mousePosition.x - startPos.x;
            float mouseMoveY = Input.mousePosition.y - startPos.y;
            startPos = Input.mousePosition;

            //float ex = transform.rotation.eulerAngles.x - mouseMoveY;
            //if(ex >= 50 || ex <= 0) mouseMoveY = 0;
           
            transform.Rotate (-mouseMoveY * 0.1f, 0, 0);
            transform.Rotate (0, mouseMoveX * 0.1f, 0, Space.World);
        }

        // 전후좌우 이동
        float speed = 5.0f;
        float amtMove = speed * Time.deltaTime;

        if(Input.GetKey(KeyCode.Q)) transform.Translate(Vector3.down * amtMove);
        else if(Input.GetKey(KeyCode.E)) transform.Translate(Vector3.up * amtMove);
        else
        {
            float ver = Input.GetAxis("Vertical");// 전후 이동 방향(벡터)
            float hor = Input.GetAxis("Horizontal");// 좌우 이동 방향(벡터)
           
            transform.Translate(Vector3.forward * ver * amtMove);// 전후진
            transform.Translate(Vector3.right * hor * amtMove);// 좌우 이동
        }
    }
}