유니티에서 마우스 휠 사용법
이것이 내가 유니티에서 사용해본 방법이다.
public class FollowCam : MonoBehaviour
{
public Transform targetTr;//따라갈 타겟
Transform camTr;//카메라 트랜스폼
//따라갈 대상으로부터 떨어질 거리
[Range(2.0f, 20.0f)]
//public float distance = 10.0f;
public float distance = 3.5f;
//Y축 높이 바꿀것
[Range(0f, 10.0f)]
//public float height = 2.0f;
public float height = 3.17f;
//X축 높이 바꿀것
[Range(0f, 10.0f)]
//public float targetOffset = 2.0f;
public float targetOffset = 1.38f;
void Start()
{
camTr = GetComponent<Transform>();
}
// Update is called once per frame
void Update()
{
float wheelInput = Input.GetAxis("Mouse ScrollWheel");
camTr.position = targetTr.position + (-targetTr.forward * distance) + (Vector3.up * height);
camTr.LookAt(targetTr.position + targetTr.up * targetOffset);//카메라가 해당 타겟을 항상 바라보게 됨.
distance = Mathf.Clamp(distance - wheelInput, 1f, 20f);
결국 이것저것 써놨지만 아래와 다른점은 단 하나다.
이렇게 클램프를 사용해서 제한을 주고 바로 적용을 했다.
distance = Mathf.Clamp(distance - wheelInput, 1f, 20f);
이렇게 한이유는 그냥 증감치로 넣었을경우 20.1로 들어가버려서 if문으로 예외처리하려면 넘었을때 처리가 또 들어가야하기떄문에 코드가 조금 늘어지기 떄문이다.
//아래는 참고한 사이트의 정보이다.//
게임에서는 마우스 커서 위치를 확인하는 것도 굉장히 많이 사용되는 편이다. 마우스 커서 위치는 다음과 같이 가져올 수 있다.
void Update()
{
Vector3 mousePos = Input.mousePosition;
}
참고로 프로그램 화면의 왼쪽 아래가 (0, 0)이다.
마우스 휠 입력 처리
최근에 사용되는 마우스의 경우에는 기본으로 휠이 장착되어 있다. 휠 동작의 경우에는 휠을 돌리면 화면이 위/아래로 스크롤된다거나, 화면이 확대/축소 되는 방식으로 지원된다.
마우스 휠 입력을 처리하는 방법은 두 가지가 있는데 그 예시는 다음과 같다.
void Update()
{
float wheelInput = Input.GetAxis("Mouse ScrollWheel");
if (wheelInput > 0)
{
// 휠을 밀어 돌렸을 때의 처리 ↑
}
else if (wheelInput < 0)
{
// 휠을 당겨 올렸을 때의 처리 ↓
}
Vector2 wheelInput2 = Input.mouseScrollDelta;
if (wheelInput2.y > 0)
{
// 휠을 밀어 돌렸을 때의 처리 ↑
}
else if (wheelInput2.y < 0)
{
// 휠을 당겨 올렸을 때의 처리 ↓
}
}
추가로, 휠을 한 틱 돌렸을 때, 변경되는 값은 0.1이다.
출처: https://wergia.tistory.com/117 [베르의 프로그래밍 노트:티스토리]