어느 게임이든 PC 게임이라면, 조작할 때 가장 중요한 요소는 마우스입니다. 메뉴를 선택하거나 아이템을 사용하거나 장비를 장착하거나 해제하거나, 등등. 선택, 사용, 등 조작을 하려면 마우스를 이용하는 것이 현재 우리에게 가장 익숙하고 편합니다. 마우스 구성은 마우스 바닥에 움직임을 감지하는 광이나 볼이 있고 위에 클릭했는지에 대한 입력 값을 받을 수 있는 버튼이 보통 3개가 있습니다. 왼쪽, 오른쪽, 휠 버튼이 있고 보통 마우스는 왼쪽 버튼으로 클릭하여 선택합니다. 유니티에서는 이 버튼 3개에 대한 입력 값을 받아서 사용할 수 있는데 GetMouseButton이라는 bool 값을 이용하면 됩니다. GetMouseButton은 매개변수로 int 값을 받는데 각 버튼 별로 0(왼쪽), 1(오른쪽), 2(가운데)를 넣어주면 해당 버튼에 대한 입력 값을 반환합니다. 마우스를 처음 눌렀을 때와 누르고 있을 때, 눌렀다가 땠을 때를 인식할 수 있습니다.
C# (UNITY 3D)
마우스의 왼쪽, 오른쪽, 가운데(휠)을 클릭했을 때 마우스 이미지에 표시하고 눌린 버튼에 대해 Text로 표시하는 예시입니다. 마우스를 눌렀을 때(GetMouseButtonDown), 누르고 있을 때(GetMouseButton), 땔 때(GetMouseButtonUp)의 입력 값을 이용합니다. 마우스 이미지에 표시는 단순 게임 오브젝트를 끄거나 켜서 표시합니다.
using UnityEngine.UI;
현재 마우스의 어떤 버튼을 눌렀는지를 표시용 Text를 사용하기 위해 UnityEngine.UI를 사용합니다.
각 오브젝트를 스크립트에 할당해 줍니다.
오브젝트 구조는 관리하기 편하게 한곳에 모아두고 Left, Right, Wheel을 표시해 줄 게임 오브젝트는 기본적으로 꺼둡니다.
public GameObject mouse_left;
public GameObject mouse_right;
public GameObject mouse_wheel;
public Text text_mouse;
private void Update()
{
Check_GetMouseButton();
}
//CodeFinder 코드파인더
//From https://codefinder.janndk.com/
private void Check_GetMouseButton()
{
string message = "";
if (Input.GetMouseButtonDown(0))
{
mouse_left.gameObject.SetActive(true);
}
else if (Input.GetMouseButtonUp(0))
{
mouse_left.gameObject.SetActive(false);
}
else if (Input.GetMouseButton(0))
{
message += "left";
}
if (Input.GetMouseButtonDown(1))
{
mouse_right.gameObject.SetActive(true);
}
else if (Input.GetMouseButtonUp(1))
{
mouse_right.gameObject.SetActive(false);
}
else if (Input.GetMouseButton(1))
{
message += ((message.Equals("") ? "" : "\n") + "right");
}
if (Input.GetMouseButtonDown(2))
{
mouse_wheel.gameObject.SetActive(true);
}
else if (Input.GetMouseButtonUp(2))
{
mouse_wheel.gameObject.SetActive(false);
}
else if (Input.GetMouseButton(2))
{
message += ((message.Equals("") ? "" : "\n") + "wheel");
}
if (message.Equals(""))
{
message = "Please Click!";
}
text_mouse.text = message;
Debug.Log(message);
}
변수(variable)
mouse_left(GameObject) : 왼쪽 마우스 표시용 게임 오브젝트
mouse_right(GameObject) : 오른쪽 마우스 표시용 게임 오브젝트
mouse_wheel(GameObject) : 가운데(휠) 마우스 표시용 게임 오브젝트
text_mouse(Text) : 입력 값이 있는 버튼 표시
함수(function)
Check_GetMouseButton : 마우스 입력이 있는지 체크하고 있을 경우 어떤 입력이 있었는지 확인 후 UI에 표시
Get Mouse Input / 마우스 클릭 인식
'Unity3D > C#' 카테고리의 다른 글
Unity Mouse Cursor를 천천히따라다니는 2D 오브젝트 (0) | 2020.11.04 |
---|---|
유니티 마우스 커서, 이미지 마우스 따라다니게 하기 (Mouse Position) (4) | 2020.11.02 |
Unity Random Position in Screen (Random Range) (0) | 2020.10.31 |
유니티 랜덤 색상 추출, RGBA color to hex code (0) | 2020.10.30 |
Unity Pick Random Image (Random.Range, index) (2) | 2020.10.29 |