유니티를 사용하다 보면 키입력을 GetKey() 함수로 받아온다.
캐릭터를 조작하기 위하여 키를 입력할때는 해당 키가 눌렸을 때 특정값을 반환하고, 그 값을 이용하여 조작한다.
Input.GetAxis / GetAxisRaw는 이러한 과정을 생략하고 사전에 맵핑된 키를 눌렀을때 -1 ~ 1의 사이값을 반환해 주는 함수다.
GetAxis 와 GetAxisRaw의 차이
● GetAxis
특징
- axisName(이름)으로 식별된 가상의 축의 값을 반환.
- 키보드 및 조이스틱 입력의 경우 -1 ~ 1 범위를 갖는다.
- 축이 델타 마우스 이동으로 설정된 경우 마우스 델타에 축 감도를 곱하고 범위는 -1 ~ 1이 아니다.
- 프레임 속도와 무관하므로 반환된 값을 사용할 때 프레임 속도 변화에 대해 걱정할 필요가 없다.

==================================================================================
● GetAxisRaw
특징
- smoothing filtering applied 않은 상태에서 axisName(이름)으로 식별된 가상 축의 값을 반환합니다.
- 키보드 및 조이스틱 입력의 경우 -1 ~ 1 범위입니다.
- 입력이 스무딩되지 않으므로 키보드 입력은 항상 -1, 0 또는 1이 됩니다.
- 키보드 입력 처리의 모든 스무딩을 직접 수행하려는 경우에 유용합니다.

●결론
- 둘다 -1 ~ 1까지 반환 한다.
- GetAxis는 소수점 까지 반환한다. => 부드러운 이동이 가능
- GetAxisRaw는 정수로만 반환한다. => 즉각적인 이동이 가능
- 둘다 입력이 없으면 0을 반환한다.
- 반환된 값은 벡터에 곱하여 방향으로 이용할 수 있다.
- (1 ~ = 위, 전진, 오른쪽 / 0 = 정지 / ~ -1 = 뒤, 후진, 왼쪽)
사용방법
1. 사용할 키 매핑 및 이름 정하기
상단의 Edit -> Project Setting -> Input Manager

상세옵션에서 이름 및 키를 설정한다.

2. 맵핑한 이름으로 사용하기
입력받은 값을 변수에 저장후 사용
private void PlayerMove() // 입력받아 캐릭터를 이동시키는 함수
{
// 입력받기
horizontal = Input.GetAxisRaw("Horizontal"); // 변수 저장
vertical = Input.GetAxisRaw("Vertical"); // 변수 저장
// horizontal = Input.GetAxis("Horizontal"); // 테스트
// vertical = Input.GetAxis("Vertical"); // 테스트
// 캐릭터 이동
Vector3 horizonMove = transform.right * horizontal; //가로 이동
Vector3 verticalMove = transform.forward * vertical; //세로 이동
Vector3 movePlayer = (horizonMove + verticalMove).normalized * playerSpeed; // 백터 정규화
this.transform.Translate(movePlayer * Time.deltaTime);
// Debug.Log(movePlayer); // 벡터 측정
}'GameDevelopment(개임개발) > Unity_KeyWord' 카테고리의 다른 글
| Unity_Multi-Camera (멀티 카메라) (0) | 2024.03.12 |
|---|---|
| Unity_TileMap (0) | 2024.03.07 |
| Unity Script File Naming(유니티 스크립트 이름 명명하기) (0) | 2024.02.27 |
| Unity_Components(컴포넌트) (0) | 2024.02.06 |
| Unity_GameObject(게임 오브젝트) (0) | 2024.02.06 |