마우스 입력 처리 총정리
[본 포스트의 내용은 유튜브 영상으로도 시청하실 수 있습니다]
마우스는 PC의 중요한 입력장치 중 하나로 PC를 타깃으로 하는 게임이라면 십중팔구는 마우스에 대한 입력처리가 필수적이다. 이번 섹션에서는 마우스 입력 처리하는 방법에 대해서 알아보자.
마우스를 통해서 들어오는 입력은 세 가지 정도로 나눌 수 있다. 버튼 입력, 위치 센서 입력, 스크롤휠 입력이 그것이다.
마우스 버튼 입력 처리
첫 번째로 알아볼 입력 처리는 버튼에 대한 입력 처리다.
마우스 버튼에 대한 입력은 일반적으로 Down, Hold, Up 이 세 가지 과정으로 나누어져서 처리된다. Down은 버튼을 누르는 순간을 의미하고 Hold는 누른 상태로 유지하는 것, Up은 눌려진 버튼을 떼는 것을 의미한다.
bool Input.GetMouseButtonDown(int button);
bool Input.GetMouseButton(int button);
bool Input.GetMouseButtonUp(int button);
유니티에서는 Input 클래스의 GetMouseButtonDown(), GetMouseButton(), GetMouseButtonUp() 함수를 통해서 버튼의 입력을 확인할 수 있는데, 이 함수들의 사용 예시는 다음과 같다.
void Update ()
{
if (Input.GetMouseButtonDown(0))
{
// 마우스 왼쪽 버튼을 눌렀을 때의 처리
}
if (Input.GetMouseButton(0))
{
// 마우스 왼쪽 버튼을 누르고 있는 도중의 처리
}
if (Input.GetMouseButtonUp(0))
{
// 마우스 왼쪽 버튼을 뗄 때의 처리
}
}
이 함수들의 매개변수에는 버튼의 번호가 들어가는데, 각 번호가 의미하는 마우스 버튼은 다음과 같다.
0 : 마우스 왼쪽 버튼
1 : 마우스 오른쪽 버튼
2 : 마우스 휠 버튼
3~6 : 마우스에 달린 추가 버튼
마우스 커서 위치 처리
게임에서는 마우스 커서 위치를 확인하는 것도 굉장히 많이 사용되는 편이다. 마우스 커서 위치는 다음과 같이 가져올 수 있다.
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이다.
[유니티 어필리에이트 프로그램]
아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.
[투네이션]
[Patreon]
[디스코드 채널]
'Unity3D > Programming' 카테고리의 다른 글
[Unity3D] 유니티에서 JSON 사용하기(Unity JSON Utility) (11) | 2019.01.24 |
---|---|
[Unity3D] 로그(Log) 출력시 스택 트레이스(Stack trace) 관리하기 (0) | 2018.10.15 |
[Unity3D] Mobile - 모바일 앱에서 디바이스의 배터리 잔량 표시하기 (0) | 2018.09.17 |
[Unity3D] Programming - 커스텀 IEnumerator 클래스 만들기(Custon yield instruction) (1) | 2017.07.17 |
[Unity3D] 로딩 씬(Loading Scene) 구현하기 (11) | 2017.07.10 |