반응형
마우스로 카메라 조작하기
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 #유니티 #게임개발 #메타버스
반응형
'유니티 공부 > Unity' 카테고리의 다른 글
Unity - PlayerPrefs 설명 및 이용해서 게임 저장해보기 (0) | 2023.09.20 |
---|---|
Unity - 카메라로 씬에 있는 게임 오브젝트 조작하기 (0) | 2023.09.20 |
Unity - 아이템 획득 효과(아이템이 위로 올라가면서 서서히 사라지게 하기) 넣는 법 (0) | 2023.09.19 |
Unity - Mouse입력 Action으로 처리해보기 (0) | 2023.09.15 |
Unity - Mathf.Clamp (0) | 2023.09.15 |
댓글