Unity/기능 구현 / / 2025. 12. 9. 10:35

[Unity] Input System으로 이동

반응형

과거 자료들은 이동 처리를 아래처럼 처리하는 것이 일반적이다.

float horizontal = Input.GetAxisRaw("Horizontal");
float vertical = Input.GetAxisRaw("Vertical");
moveDirection = new Vector3(horizontal, 0, vertical).normalized;

characterController.Move(moveDirection * moveSpeed * Time.deltaTime)

 

Input Manager라고 불리던 방식은 최신 버전인 유니티 6에서는 동작하지 않는다.

 

이를 사용하기 위해서는 메뉴 Edit - Project Settings - Player 로 들어가서 기타 설정에 하단에서 입력 설정을 Both로 변경해줘야 한다.

 

 

유니티는 표준 입력 처리를 Input System으로 전환했다. 구조가 언리얼 엔진의 Enhanced Input System과 유사하다.

 

간단하게 정리하면 어떤 입력장치의 특정 버튼(Key)과 호출할 함수를 매핑하는 방식이다.

이렇게 하면 여러 디바이스에서도 입력을 손쉽게 처리할 수 있다는 이점이 있다.

 

 

Input System 을 통해 이동 처리를 한다면 다음과 같이 바뀐다.

 

1. 먼저 입력을 받을 캐릭터는 Player Input 컴포넌트를 추가한다.

다른 건 딱히 설정해 줄 것이 없는데, Default Map을 Player로 따로 설정해줘야 한다.

UI와 Player 중 입력을 매핑할 대상을 플레이어로 지정한다.

 

 

그 다음으로 Input System 설정을 확인하는 것인데, 둘 중 한가지 방법으로 들어가면 된다.

1. Edit - Project Settings - Input System Package 클릭

2. Player Input 컴포넌트에서 Actions에 있는 InputSystem_Actions 더블 클릭

 

들어가면 기본적으로 유니티에서 간단한 기능들은 다 만들어 두었다.

WASD 키에 Vector2로 설정이 되어있다.

 

더 디테일하게 눌러보면 입력 장치에 값을 하나하나 매핑해둔 것이다.

 

정리하면 WASD 키를 누르면 Vector2로 (x, y) 에 -1 ~ +1 값을 gameObject에 OnMove(InputValue value)로 반환한다.

 

그러면 사용자는 InputValue를 value.Get<Vector2>()로 벡터로 변환하여 이동 값으로 쓰면 된다.

    Vector3 moveDir;
    
    void OnMove(InputValue value)
    {
        moveDir.x = value.Get<Vector2>().x;
        moveDir.y = 0f;
        moveDir.z = value.Get<Vector2>().y;
    }
    
    void Update()
    {
   		 characterController.Move(moveDir * moveSpeed * Time.deltaTime);
    }

2D 게임이면 (x, y)를 그대로 사용하면 되고, 3D 게임이면 y값을 z축으로 받아서 처리하면 된다.

반응형

'Unity > 기능 구현' 카테고리의 다른 글

[Unity] Follow Camera  (1) 2026.01.06
[Unity] Playerprefs  (0) 2025.12.01
[Unity] Monster 설정  (1) 2025.11.29
[Unity] 캐릭터 초기 설정  (0) 2025.11.28
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유