[Unity] 입력

AsiaticRicecake·2025년 4월 16일

1. 📖 GetKey

단일 키 입력에 대한 여부를 반환받기 위한 함수로
키가 눌리는 판정에 따라 세 가지 bool 타입 반환 함수가 있습니다.

Input.GetKey()      // 키 입력이 진행되는 동안 true를 반환합니다. 
Input.GetKeyDown()  // 키 입력이 시작되는 순간 1회만 true를 반환합니다.
Input.GetKeyUp()    // 키 입력이 종료되는 순간 1회만 false를 반환합니다.
// 키보드 & 게임패드
if (Input.GetKey(KeyCode.Space)) // 키 입력이 진행되는 동안 true
{
    Debug.Log("GetKey");
}
if (Input.GetKeyDown(KeyCode.Space)) // 눌렀을 때 1회 true
{
    Debug.Log("GetKeyDown");
}
if (Input.GetKeyUp(KeyCode.Space)) // 눌렀다가 떼는 경우 1회 false (떼면 취소 되는 경우)
{
    Debug.Log("GetKeyUp");
}

// 마우스 입력 (0, 1, 2에 따라 마우스 클릭을 설정할 수 있습니다.)
if (Input.GetMouseButton(0))
{
    Debug.Log("마우스 왼쪽");
}
if (Input.GetMouseButton(1))
{
    Debug.Log("마우스 오른쪽");
}
if (Input.GetMouseButton(2))
{
    Debug.Log("마우스 훨");
}

2. 📖 InputManager

여러 장치의 입력을 입력매니저에 이름과 입력을 정의한 것을 말합니다.

유니티에서 Edit -> Project Settings -> Input Manager로 들어갈 수 있습니다.

2-1 🔖 InputManager 호출 방법

Fire1은 InputManager에서 키보드(Left ctrl), 마우스(Left button), 조이스틱(Button0)으로 정의되어 있습니다.

if (Input.GetButton("Fire1"))
  {
     Debug.Log("Fire1 호출");
  }

2-2 🔖 GetAxis

GetAxis도 Input Manager에 대응하는 코드입니다.

유니티 좌표상의 X(Horizontal), Z(Vertical)축에 해당하는 입력 데이터이며,
미 입력시 0, 방향과 입력에 따라 -1.0 ~ 1.0 사이의 float 타입을 반환합니다.

// Horizontal(수평) : 키보드(a,d / ←,→), 조이스틱(왼쪽 아날로그스틱 좌우)
float x = Input.GetAxis("Horizontal");
if (x != 0)
   {
      Debug.Log($"Horizontal Axis {x}");
   }
   
// Vertical(수직) : 키보드(w,s / ↑,↓), 조이스틱(왼쪽 아날로그스틱 상하)
float y = Input.GetAxis("Vertical");
f (y != 0)
   {
      Debug.Log($"Vertical Axis {y}");
   }

2-3. 🔖 GetAxisRaw

GetAxis와 마찬가지로 Input Manager에 대응하는 함수입니다.
유니티 좌표상의 X, Z축에 해당하는 입력 데이터를 -1, 0, 1로 반환합니다.

float horizontalInput = Input.GetAxisRaw("Horizontal");

if (horizontalInput > 0)
{
    // 오른쪽으로 이동
}
else if (horizontalInput < 0)
{
    // 왼쪽으로 이동
}
else
{
    // 정지
}

2-4 🔖 GetAxis와 GetAxisRaw의 차이점

GetAxisGetAxisRaw
입력 값을 스무딩(smoothing)하여 반환합니다.

범위를 적용하여 입력 값의 변화를 부드럽게 만들어 줍니다.
자연스러운 제어가 가능해지는 거죠!

캐릭터의 움직임을 구현하는 경우 적용하면 좋습니다.
입력 값을 raw 데이터로 반환합니다.

입력 장치의 값을 그대로 가져오기 때문에
조금만 움직여도 -1 또는 1의 값으로 즉시 전환됩니다.

반응이 중요한 게임인 격투게임이나 리듬게임에 적용하면 좋습니다.

0개의 댓글