본문 바로가기
유니티 공부/Unity

Unity - 마우스로 카메라 조작하기

by 코딩하는 돼징 2023. 9. 20.
반응형

마우스로 카메라 조작하기

01 변수 설명

카메라의 부모 객체를 나타내는 GameObject이다. 이를 기준으로 카메라를 회전시킬 수 있다.

public GameObject parent;

02 왼쪽 드래그로 카메라 이동시키기

if(Input.GetMouseButton(0))
{
   transform.Translate(-Input.GetAxis("Mouse X") / 10,Input.GetAxis("Mouse Y") / 10,0);
}

왜 Mouse X는 음수 값을 가져와야 할까?

마우스 좌표 시스템과 컴퓨터 그래픽스의 좌표 시스템이 서로 다른 방향을 가지고 있기 때문이다.

마우스 좌표 시스템 : 사용자의 눈높이에서 본 실제화면

컴퓨터 그래픽스 좌표 시스템 : 화면을 그리는 좌표시스템

그러므로 마우스 입력 값을 컴퓨터 그래픽스 좌표 시스템에 맞게 변환할때, 사용자의 마우스 움직임 방향과 반대로 값을 조정하는 것이 필요하다.


03 오른쪽 드래그로 카메라 회전시키기

if (Input.GetMouseButton(1))
{
    parent.transform.Rotate(-Input.GetAxis("Mouse Y") * 10,Input.GetAxis("Mouse X") * 10,0);
}

왜 xAngle에 mouse Y가 있나요?

Input.GetAxis("mouseY")는 마우스를 위아래로 움직인 양을 나타낸다. 이러한 위아래 움직임을 사용하여 X축 주위의 회전을 나타낸다.


04 마우스 휠로 확대/축소

Input.GetAxis("Mouse ScrollWheel")에서 스크롤을 위로 굴리면 양수 아래로 굴리면 음수이고 가만히 있으면 0을 반환한다.

if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
    Camera.main.fieldOfView += (20 * Input.GetAxis("Mouse ScrollWheel"));
}

범위 지정하기

if (Camera.main.fieldOfView < 10)
    Camera.main.fieldOfView = 10;
else if (Camera.main.fieldOfView > 100)
    Camera.main.fieldOfView = 100;

카메라 초기화 

Vector3 defPosition;
Quaternion defRotation;
float defZoom;

void Start () {
    // 기본 위치 저장
    defPosition = transform.position;
    defRotation = parent.transform.rotation;
    defZoom = Camera.main.fieldOfView;
}

결과 확인

 

 

 

 

 

 

 

 

 

 

본 후기는 유데미-스나이퍼팩토리 10주 완성 프로젝트캠프 학습 일지 후기로 작성 되었습니다. #프로젝트캠프 #프로젝트캠프후기 #유데미 #udemy #스나이퍼팩토리 #웅진씽크빅 #인사이드아웃 #IT개발캠프 #개발자부트캠프 #unity #유니티 #게임개발 #메타버스

반응형

댓글