강의 진행중, Input.mousePosition 으로 마우스 포인터의 좌표를 얻는다거나, Input.GetMouseButtonDown(0) 으로 좌클릭을 인식하는것을 보셨을겁니다.
이러한 Input 클래스에 대하여 정리해보도록 하겠습니다.
Input 유니티 메뉴얼 링크 입니다.
https://docs.unity3d.com/kr/530/ScriptReference/Input.html
Input 시스템의 경우, 기본적으로 입력에 따라 true와 false를 반환하거나, mousePosition과 같이 Vector2 값을 반환합니다.
일단 키보드, 마우스, 조이스틱등의 입력에 따라 bool 값을 반환하는 GetKey 계열을 설명하도록 하겠습니다.
GetKey는 입력 방식에 따라 3가지로 나누어져있습니다.
//A를 누르고 있으면 true를 반환
Input.GetKey(KeyCode.A);
//A를 누를 때 true를 반환
Input.GetKeyDown(KeyCode.A);
//A에서 뗄 때 true 반환
Input.GetKeyUp(KeyCode.A);
매개변수로 해당 KeyCode를 사용하며, 이 KeyCode는 키보드부터 조이스틱, 마우스등에 대응되게 구성되어있습니다.
해당 값을 필요에 따라 사용함으로 키보드, 마우스, 조이스틱의 입력을 인식하고, 그에 맞는 행동을 게임 내에서 구현할 수 있습니다.
또한, GetAxis를 사용하여 -1부터 1 사이의 값을 반환받을수도 있습니다
//A, D 입력에 따라 A : -1, B : 1을 사이의 값을 반환
Input.GetAxis("Horizontal");
//W, S 입력에 따라 S : -1, W : 1 의 값을 반환
Input.GetAxisRaw("Vertical");
GetAxis를 사용하면 입력 시간에 따라 -1 ~ 1 사이로 부드럽게 변하는 값을 반환합니다.
사용 예시로는 게임에 관성을 부여하고 싶을경우 사용하기 좋은 값입니다.
GetAxisRaw는 입력에 따라 1, 0 -1 3개의 값을 반환하게 됩니다.
이 GetAxis의 경우, 매개변수를 string 값으로 받게됩니다.
이는 상단 메뉴바의 Edit - Project Setting... - Input Manager 에서 정의된 Name을 사용하며, 여기에서 변화의 민감도를 추가하거나, 새로운 값을 추가하여 사용할 수 있습니다.
이 외에도 위에서 말한 mousePosition 처럼 마우스의 위치를 반환하거나, GetTouch() 함수와 같이 모바일용 터치스크린에 작동하는 함수 또한 있습니다.
또한 Input.anyKey 등을 사용해 어떤방식이든 입력이 들어오면 true를 반환하는 기능또한 있습니다.
해당 기능의경우, 아직 레거시 기능으로 전환된 것은 아니지만 현재 New Input System 을 도입하면서 이후 레거시로 전환될 가능성이 있는 기능입니다.
New Input System의 경우, 유니티의 패키지 매니저에서 받아서 사용할 수 있습니다.
'사전캠프 > Unity' 카테고리의 다른 글
유니티 기능 - #region, #if (0) | 2024.08.26 |
---|---|
4주차 과제 - 30초가 지나면 게임 끝내기 (0) | 2024.08.26 |
3주차 과제 - 해적고양이 만들기 (0) | 2024.08.22 |
Unity 기능 : ScreenToWorldPoint (0) | 2024.08.22 |
2주차 강의 - 떨어지는 네모를 없에기 (0) | 2024.08.21 |