KeiStory

Unity 마우스 따라 카메라 움직이도록 하기

 

보통 PC 로 게임을 하는 경우 마우스 움직임에 따라 시선이 움직이게 됩니다.

이를 구현하기 위해서는 Player 에 Camera 를 하위로 놓고 Camera 에 스크립트 처리를 하면

손쉽게 구현이 가능합니다.

마우스 따라 카메라 움직이도록 하는 방법을 알아 보겠습니다.

이 스크립트를 이용하면 게임 시작시 마우스 움직임에 따라 카메라가 움직여

시선이 마우스에 따라 움직이도록 할 수 있습니다.

using UnityEngine;

public class CamRotation : MonoBehaviour
{
    // 회전속도
    public float rotSpeed = 400f;
    // 회전값 변수
    private float mx = 0;
    private float my = 0;

    // Update is called once per frame
    void Update()
    {

        float x = Input.GetAxis("Mouse X");
        float y = Input.GetAxis("Mouse Y");

        mx += x * rotSpeed * Time.deltaTime;
        my += y * rotSpeed * Time.deltaTime;

        transform.eulerAngles = new Vector3(-my, mx, 0);
    }
}

위 스크립트를 Camera 에 추가하여 게임을 실행하면 카메라 이동에 따라 시선이 움직입니다.

rotSpeed 는 카메라 이동속도로 이를 큰 값으로 잡은 경우 더 빠르게 움직이게 할 수 있습니다.

아래 그림을 보면 알수 있듯이 마우스 이동에 따라 카메라가 움직여 시선이 이동되는 것 처럼 처리가 가능합니다.

좌우는 상관없지만 위아래로 움직이는 경우 계속 위로가게되면 한바퀴 돌게됩니다.

이를 막기 위해서 아래 코드를 넣어  위아래로 한바퀴 도는 것을 방지할수 있습니다.

// my 값을 -90 에서 90 까지로 제한하기
my = Mathf.Clamp(my, -90, 90);

위 코드를 이용하면 위아래로 90도 이상 넘어가지 못하도록 값을 제한하게됩니다.

전체코드는 아래와 같습니다.

using UnityEngine;

public class CamRotation : MonoBehaviour
{
    // 회전속도
    public float rotSpeed = 400f;
    // 회전값 변수
    private float mx = 0;
    private float my = 0;

    // Update is called once per frame
    void Update()
    {
        float x = Input.GetAxis("Mouse X");
        float y = Input.GetAxis("Mouse Y");

        mx += x * rotSpeed * Time.deltaTime;
        my += y * rotSpeed * Time.deltaTime;

        // my 값을 -90 에서 90 까지로 제한하기
        my = Mathf.Clamp(my, -90, 90);

        transform.eulerAngles = new Vector3(-my, mx, 0);
    }
}

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band