[Unity] Input System: 키보드, 마우스, 축과 버튼 입력 처리

김나정·2024년 8월 5일
post-thumbnail

Input 클래스

  • 마우스, 키보드 등 입력관련 모든 것이 있는 클래스

키 입력의 3가지 종류

Input클래스

키보드, 마우스 무관

  • Down .anyKeyDown: 아무 입력을 최초로 받을 때 true (return bool값)
  • Stay .anyKey: 아무 입력을 받으면 true (꾹 누르고 있으면 계속 호출)

키보드 입력을 받으면 true

  • Down .GetkeyDown(parameter)
  • Stay .Getkey(parameter)
  • Up .GetkeyUp(parameter)

GetKey() 의 parameter: KeyCode.@@@

  • KeyCode. = 키보드 키 라는 뜻 (KeyCode도 하나의 클래스)
    [대표적으로 쓰이는 키]
  • KeyCode.Return = Enter
  • KeyCode.LeftArrow = 왼쪽 방향키
  • KeyCode.Escape = ESC

마우스 버튼 입력을 받으면 true

  • Down .GetMouseButtonDown(parameter)
  • Stay .GetMouseButton(parameter)
  • Up .GetMouseButtonUp(parameter)

MouseButton()의 parameter: 숫자로 받음 (0 or 1)

[대표적으로 쓰이는 키]

  • 0: 마우스 왼쪽 버튼
  • 1: 마우스 왼쪽 버튼

버튼 입력

  • Down .GetButtonDown(parameter)
  • Stay .GetButton(parameter)
  • Up .GetButtonUp(parameter)

"Input.GetButton": 다양한 입력장치를, 하나의 버튼으로 매핑하여, 한번에 처리가능

  • Input.GetButton은 입력 설정(Input Settings)에서 정의한 가상의 버튼 이름(문자열로 지정)을 사용
  • 유니티의 입력 설정 경로: Edit > Project Settings > Input
  • 예를 들어, "Jump"라는 버튼을 입력 설정에서 정의하면, 이 버튼은 키보드의 스페이스바와 컨트롤러의 A 버튼 등 여러 입력 장치와 매핑될 수 있다.

따라서 Input.GetButton("Jump")를 호출하면, 어떤 입력 장치에서든 "Jump"로 정의된 입력이 발생하면 true를 반환한다.

Button()의 parameter: 사용자가 정의한 버튼의 이름, 문자열로 받음 (ex. "Jump" or "Fire1")

  • 코드의 가독성 및 유지 보수가 쉬워짐

축 입력 (WASD)

  • Stay .GetButton("Horizontal") / .GetButton("Vertical")
  • 축(Axis): 입력 장치의 연속적인 값(예: 아날로그 스틱의 기울기, 마우스 이동량)을 표현
  • 축의 현재 상태를 -1 ~ 1 사이의 값으로 반환

이때 축의 값을 가져오는 메서드에는 2가지가 존재:
1. Input.GetAxis
2. Input.GetAxisRaw

1.Input.GetAxis("Axis name")

  • Input.GetAxis는 입력 값을 부드럽게 보간(Smoothing) 처리하여 반환
  • 예를 들어, 키보드의 좌우 화살표를 눌렀을 때, 값이 0에서 1로 즉시 바뀌지 않고, 점차적으로 변화
  • 움직임을 부드럽게 처리하는 데 유용

2.Input.GetAxisRaw("Axis name")

  • Input.GetAxisRaw는 입력 값을 즉시 반환
  • 예를 들어, 키보드의 좌우 화살표를 눌렀을 때, 값이 즉시 0에서 1 또는 -1로 변화
  • 정확하고 빠른 입력 처리가 필요한 경우에 유용

profile
molbwa

0개의 댓글