Priv's Blog
키보드 입력을 감지하는 함수들 본문
1) GetButtonDown("ButtonName");
KeyCode가 아니라, ButtonName으로 작동되므로 주의
ButtonName은 사용자가 미리 세팅해야 한다.
Edit -> Project Settings -> Input 으로 가면, 미리 설정된 ButtonName을 볼 수 있고, 사용자가 직접 설정할 수도 있다.
동작 방식은, 버튼을 누르는 순간 1회 True가 발생하는 방식이다.
2) GetButton("ButtonName");
GetButtonDown()과 유사한 GetButton() 함수도 ButtonName으로 작동된다.
GetButtonDown()과의 차이점은 동작 방식이다.
GetButton은 버튼을 누르고 있는 동안 계속해서 True가 발생하는 방식이다.
유니티 매뉴얼을 보면, 총기 자동 사격처럼 버튼이 눌러진 시간만큼 True를 반환하는 기능처럼, 액션 트리거 이벤트를 구현해야 하는 경우에만 사용하라고 한다.
(이유는 잘..)
3) GetButtonUp("ButtonName");
GetButtonDown()와 반대되는 기능을 할 것처럼 생긴 GetButtonUp() 함수.
GetButtonDown()와 달리 GetButtonUp()은 ButtonName을 통해 식별된 버튼을 떼었던 첫 프레임에 True를 반환한다.
즉, 키에서 손을 떼는 순간 인식된다는 것.
기어스 오브 워 4, 기어스 5에 나온 '오버킬' 샷건 같은 기능 구현할 때 써먹을 수 있을 듯.
(오버킬 샷건: 트리거를 당길 때 한 번, 놓을 때 한 번 발사되는 독특한 샷건이다.)
4) GetKey("Name");
GetKey()는 ButtonName이 아니라 Name으로 작동되며, KeyCode를 사용할 수도 있다.
Name은 말 그대로 이름이다. 아래 예시 참조.
Ex) GetKey("W");
키보드 W 키를 입력하면 True 반환
Ex) GetKey(KeyCode.W);
키보드 W 키를 입력하면 True 반환
예시를 보면 기능은 똑같다.
사실상 모든 키보트 키들은 맵핑이 다 되어 있고, KeyCode를 사용하면 화살표 키나 esc 키 등등 다양한 기능 키들도 설정할 수 있다.
(그냥 Name 방식을 써도 거의 다 키 이름 입력해서 쓸 수 있는 듯하다. 근데 화살표 키나 F1~12 키들은 어떻게 쓰지..)
매뉴얼에 KeyCode와 함께 쓸 수 있는 키보드 키들이 전부 표로 정리되어 있으니 KeyCode를 쓰는 게 어쩌면 쉬울지도 모르겠다..
5) GetKeyUp("Name");
GetButtonUp()과 비슷하다.
Name으로 지정된 키를 뗀 프레임 동안 True를 반환한다.
GetButtonUp()에서 ButtonName이 Name으로 바뀌었다고 생각하면 될 듯..
이 함수도 KeyCode 사용 가능.
그리고 앞에서 언급하지 않았는데, 키를 떼는 순간에 True를 반환하기 때문에 키를 누르고 있는 순간에는 True를 반환하지 않으며, 이는 GetButtonUp()도 마찬가지다.
(당연한 건가..)
참고
'Dev. Study Note > Unity' 카테고리의 다른 글
<유니티 교과서> C# 스크립트 파트 요약 정리 (0) | 2019.12.24 |
---|---|
Unity-Chan 에셋 사용 시, 전용 라이트가 너무 밝을 때 (0) | 2019.11.05 |
Scene을 로드하는 방법들 (버전 별 Scene 불러오기 차이점) (0) | 2019.11.05 |
Animator.SetFloat() 함수 (0) | 2019.09.04 |
Unable to list target platforms ~ 에러 발생 시 (0) | 2019.09.01 |