Input.GetAxis()는 GetAxis와 관련된 입력을 받아오는 명령어로, -1과 1사이의 실수값을 리턴하고,기본적으로는 0의 값을 가진 함수입니다.
대표적으로 Horizontal과 Vertical에 대한 값을 받아옵니다.
즉, Horizontal의 값을 받아올때 왼쪽 키를 누르면 0 ~ -1f의 값을 받아오고 오른쪽 키를 누르면 0 ~ 1f의 값을 받아옵니다.
GetAxis는 알아봤는데 그럼 GetAxisRaw는 뭘까요? Input.GetAxisRaw는 -1, 0, 1의 값을 즉시 받아옵니다.
반면 GetAxis는 -1 ~ 1값을 부드럽게 받아옵니다. 예시를 들어 코드를 하나 작성하겠습니다.
public class Player : MonoBehaviour
{
public Vector2 inputVec;
void Update()
{
inputVec.x = Input.GetAxis("Horizontal");
inputVec.y = Input.GetAxisRaw("Vertical");
}
void FixedUpdate()
{
Vector2 nextVec = inputVec.normalized * speed * Time.fixedDeltaTime;
rigid.MovePosition(rigid.position + nextVec);
}
}
.gif로 바꾸어서 짤이 조금 끊기는 느낌은 있지만 수평, 수직 둘 다 비슷한 시간동안 키를 눌렀습니다.
GetAxis로 작성한 좌우로 이동은 좀 더 부드럽게 값을 받아오기 때문에 조금 더 많이 움직이는 부분을 보이고 있고
GetAxisRaw로 작성한 위아래 이동은 즉시 값을 받아오기 때문에 키를 뗐을때, 0을 받아오므로 급정지 하는 모습을 볼 수 있습니다.
참고로 InputManager는 Unity에서 Edit - ProjectSetting - Input Manager를 통해 확인할 수 있습니다.
Input Manager에는 Horizontal, Vertical을 제외한 여러가지 입력을 설정할 수 있습니다.
그리고 Input 함수에는 GetAxis외에도 GetKey(), GetButton()등 여러가지 있습니다.
GetAxis()와 GetKey(), GetButton()은 비슷한 기능을 수행하지만, GetKey, GetButton은 Bool형식으로 True/False를 반환하는 반면, GetAxis는 Float형식으로 -1과 1사이의 실수를 리턴하는 차이점이 있습니다.