마우스 입력 처리 총정리
[본 포스트의 내용은 유튜브 영상으로도 시청하실 수 있습니다]
마우스는 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이다.
[유니티 어필리에이트 프로그램]
아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.
에셋스토어
여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.
assetstore.unity.com
Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store
Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!
store.unity.com
Create 2D & 3D Experiences With Unity's Game Engine | Unity Pro - Unity Store
Unity Pro software is a real-time 3D platform for teams who want to design cross-platform, 2D, 3D, VR, AR & mobile experiences with a full suite of advanced tools.
store.unity.com
[투네이션]
-
toon.at
[Patreon]
WER's GAME DEVELOP CHANNEL님이 Game making class videos 창작 중 | Patreon
WER's GAME DEVELOP CHANNEL의 후원자가 되어보세요. 아티스트와 크리에이터를 위한 세계 최대의 멤버십 플랫폼에서 멤버십 전용 콘텐츠와 체험을 즐길 수 있습니다.
www.patreon.com
[디스코드 채널]
Join the 베르의 게임 개발 채널 Discord Server!
Check out the 베르의 게임 개발 채널 community on Discord - hang out with 399 other members and enjoy free voice and text chat.
discord.com
'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 |