[Unity3D] RPG게임 카메라 - 줌 인/아웃, 카메라 회전. [Part 3]
※ 주의
이 글은 아마추어가 개인적으로 생각하여 작성하는 것으로, 이곳에 나오는 내용을 맹신하지 않는것을 당부드립니다.
기능정리
1. 플레이어를 따라오는 카메라.
1.5. 플레이어의 움직임.
2. 마우스 휠 카메라 줌 인,아웃 기능.
3. 마우스 오른쪽 버튼 클릭 후 카메라 회전.
- x,y축 회전
- x축 회전의 한계치 설정.
2. 마우스 휠 카메라 줌 인,아웃
Input에는 마우스 휠에대한 반환값도 제공해주고있다.
Input.GetAxis("Mouse ScrollWheel");
반환값은 float로 반환되며 휠을 위로 굴릴경우 양수의 값이,
밑으로 굴릴경우 음수의 값이 반환된다.
이를활용하여 줌 인,아웃 기능을 수행할 것이다.
카메라맨과 카메라의 거리를 유지해주는 Distance라는 변수에
휠을 위로 굴릴경우 Distance를 감소시켜주어 줌 인 기능을 수행하고,
휠을 밑으로 굴릴경우 Distance를 증가시켜주어 줌 아웃 기능을 수행하여 보자.
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 | using System.Collections; using System.Collections.Generic; using UnityEngine; public class Axis : MonoBehaviour { public float ZoomSpeed; // 줌 스피드. public float Distance; // 카메라와의 거리. private Vector3 AxisVec; // 축의 벡터. private Transform MainCamera; // 카메라 컴포넌트. void Start() { MainCamera = Camera.main.transform; } void Update() { Zoom(); } // 카메라 줌. void Zoom() { Distance += Input.GetAxis("Mouse ScrollWheel") * ZoomSpeed * -1; Distance = Mathf.Clamp(Distance, 5f, 20f); AxisVec = transform.forward * -1; AxisVec *= Distance; MainCamera.position = transform.position + AxisVec; } } | cs |
휠을 위로 굴렸을 때 줌 인 효과를 내고 싶다면 Distance에 값을 그대로 더해주면 안된다.
휠을 위로 굴리면 반환값이 양수 값이기 때문에 Distance는 자연히 커지게 되고
줌 인 효과가 아닌 줌 아웃 효과가 나타나게 된다.
그렇기 때문에 Distance += 휠 값 * 줌 스피드 * -1;
-1을 곱해줌으로써 음수 값으로 만들고 휠을 위로 굴렸을 때 Distance값이 감소하게 된다.
Mathf.Clamp함수는 값을 제한해주는 함수이다.
Mathf.Clamp(Value, Min, Max);
Value는 값을 제한해줄 값을 집어넣고, Min은 그 값의 최소값, Max는 그 값의 최대 값을 지정해 준다.
결과
'Unity3D > Project' 카테고리의 다른 글
[Unity3D] 조이스틱으로 캐릭터 조종하기. [Part 1] (6) | 2017.03.10 |
---|---|
[Unity3D] RPG게임 카메라 - 줌 인/아웃, 카메라 회전. [Part 4] (3) | 2017.03.08 |
[Unity3D] RPG게임 카메라 - 줌 인/아웃, 카메라 회전. [Part 2] (0) | 2017.03.07 |
[Unity3D] RPG게임 카메라 - 줌 인/아웃, 카메라 회전. [Part 1] (0) | 2017.03.06 |
[Unity3D] 캐릭터 움직임, 충돌체크, 물리엔진사용 X [Part 5] (0) | 2017.03.02 |