Unity C# > UnityEngine : Input
카테고리: UnityDocs
태그: Unity Game Engine
공부하면서 알게된 것만 정리합니다.😀
👩🦰 Input
UnityEngine에서 제공하는 입력과 관련된 집합. 키보드, 모바일, 조이스틱의 입력을 받을 수 있는 여러 함수들의 집합.
🚀 변수/프로퍼티
✈ mousePosition
- 현재 마우스 위치를 (0, 0) ~ (Screen.width, Screen.height) 로 나타낼 수 있는 픽셀 좌표(Screen)로서의 나타낸다.
- 즉, 현재 마우스 위치를 해상도를 기준으로 한 화면상의 좌표로 나타낸다.
- 좌측 하단을 (0, 0) 우측 상단을 (Screen.width, Screen.height)으로 한 화면 좌표계
✈ anyKey
- 어떤 키보드의 키 혹은 마우스 버튼이 눌린 상태인지를 확인한다.
- 어떤 키던지 마우스 클릭이 들어왔던지 일단 입력이 들어오면 값은 True다.
- 읽기 전용 이다.
✈ KeyCode
- 키보드의 각 자판들은 정수와 매칭된다.
- 그러나 자판에 매칭되는 정수를 모두 외우기는 힘듬. 119는 W.. 이런식으로 외울 수가 없음.
- KeyCode 클래스에 각 키보드 자판들과 정수가 연결되어 있으니 예를 들어
KeyCode.W
이런식으로 갖다 쓰기만 하면 된다.
사실 Input 에 속해있는 프로퍼티는 아니지만 Input과 함께 쓰이기에 넣음
🚀 함수
✈ GetKey, GetKeyUp, GetKeyDown
public static bool GetKey(string name);
- 뫄뫄 키보드 입력이 들어오면 True를 리턴한다.
- 뫄뫄 키보드 입력이 들어오지 않는 상태면 False를 리턴한다.
- ex) Input.GetKey(KeyCode.W) : W키가 입력되면 True 리턴
GetKey
: 키를 누르는 동안GetKeyUp
: 키를 떼는 순간GetKeyDown
: 키를 누르는 순간
✈ GetMouseButton, GetMouseButtonUp, GetMouseButtonDown
public static bool GetMouseButton(int button);
- GetMouseButtonDown : 마우스를 누르는 순간
GetMouseButtonDown(0)
: 마우스 좌클GetMouseButtonDown(1)
: 마우스 우클
✈ GetAxis
public static float GetAxis(string axisName);
-1.0f ~ 1.0f 까지의 범위의 값을 리턴한다. float 값을 리턴하기 때문에 부드러운 이동이 필요한 경우에 사용된다.
GetKey
와 다르게 문자열을 매개변수로 받으며 float 값을 리턴한다.- ex) “Horizontal”
- 수평 방향에 대해서 키보드나 조이스틱으로 입력을 했을때 -1 ~ +1 사이의 float 값을 리턴한다.
- 즉 키보드 수평방향에 대응되는 키들이 “Horizontal”에 맵핑되어 있다.
- A와 D가 맵핑 되어 있다.
- “Fire”, “Jump”, “Crunch” 등등..
GetKey
보다 좋은 점- 만약 점프 키를 Space bar가 아닌 윗쪽 방향키로 바꾸고 싶다면?
GetKey
의 경우 직접 코드로 찾아가서 GetKey(KeyCode.SpaceBar)를 Getkey(KeyCode.Up)으로 바꾸는 수고를 감수해야 한다.- 그런데
GetAxix
를 사용한다면 점프 동작에 대한 유니티 상에서 "Jump"에 Space bar가 할당 되있는 것을 그냥 Up으로 바꿔주면 땡이다.- 직접 GetKey처럼 코드 찾아가서
Input.GetAxis("Jump")
코드를 수정하지 않아도 되는 것이다! - 그냥 유니티 Project Settings 에서 바꾸기만 하면 된다.
- 직접 GetKey처럼 코드 찾아가서
- 그런데
- 만약 점프 키를 Space bar가 아닌 윗쪽 방향키로 바꾸고 싶다면?
- 문자열에 맵핑된거 바꾸는 방법
- 유니티 - 메뉴 - Edis - Project Settings - Input 에서 바꿀 수 있다.
- 현재 Horizontal은 왼쪽 방향키(left), 오른쪽 방향키(right), 그리고 보조로 A키, D키가 설정 되어있다.
- Negative :
left
,A
- Positive :
Right
,D
- Negative :
- float 값을 리턴하는 이유 : 조이스틱 때문
Negative
키는-1.0f
ex) “Horizontal”에서 A키Positive
키는1.0f
ex) “Horizontal”에서 D키- 아무것도 안누를 땐
0.0f
- 이렇게 -1 ~ 1 사이의 float 실수값을 반환하는데 이렇게 하는 이유는 조이스틱 입력 때문!
- 조이스틱은 키보드와 다르게 딱 눌렀다 뗏다 같이 이분법적으로 생각할 수가 없기 때문.
- 조이스틱은 아주 살짝만 밀거나 많이 밀거나 미는 정도에 따라 입력의 정도가 다른 것!
- 오른쪽으로 살짝 밀면 0.2 이런게 가능
- Input.GetAxis(“Horizontal”)
- Input.GetAxis(“Vertical”)
- Input.GetAxis(“Mouse X”)
- Input.GetAxis(“Mouse Y”)
- Input.GetAxis(“Fire”)
- 등등 그 밖에도 project settings - input - axis 에서 확인할 수 있다.
✈ GetAxisRaw
public static float GetAxisRaw(string axisName);
-1
,0
,1
셋 중 하나가 리턴된다. 키보드처럼 즉시 반응해야 한다면 GetAxisRaw 를 사용하는게 낫다.
GetAxis 는 조이스틱에, GetAxisRaw 는 키보드에 적합.
- 사용 방법은 Input.GetAxis와 같다.
-1
,0
,1
셋 중 하나가 리턴되므로- Input.GetAxisRaw(“Horizontal”)
- A 입력시 -1 리턴
- 입력 X시 0 리턴
- D 입력시 1 리턴
- Input.GetAxisRaw(“Vertical”)
- S 입력시 -1 리턴
- 입력 X시 0 리턴
- W 입력시 1 리턴
- Input.GetAxisRaw(“Mouse X”)
- 마우스가 아래로 움직였으면 -1 리턴
- 마우스가 위아래로 움직이지 않았으면 0
- 마우스가 위로 움직이면 1
- Input.GetAxisRaw(“Mouse Y”)
- 마우스가 왼쪽으로 움직였으면 -1 리턴
- 마우스가 좌우로 움직이지 않았으면 0
- 마우스가 오른쪽로 움직이면 1
- Input.GetAxisRaw(“Horizontal”)
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기