본문 바로가기
GameDevelopment(개임개발)/Unity_KeyWord

Input.GetAxis / GetAxisRaw (입력한 방향 받아오기)

by (S39) 2024. 2. 27.

유니티를 사용하다 보면 키입력을 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); // 벡터 측정
    }