본문 바로가기
Unity 강의/Unity Course(2) - 절대강좌! 유니티

[Unity Course 2] 14. Input System - 새로운 Input System의 특징

by 첨부엉. 2024. 6. 29.
반응형
위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.

 

기존 입력 시스템인 Input Manager는 다양한 플랫폼을 지원하기 이전에 설계됐기 때문에 확장성과 편의 문제로 Input System이라는 새로운 입력 시스템을 제공하고 있다.

 

레거시 Input 클래스

기존 유니티에서 제공했던 Input System 클래스의 역할은 키보드, 마우스, 터치, 게임패드와 같은 외부 입력장치의 입력값을 미리 정의해두고 코드에서 직접 해당 디바이스로부터 입력값이 있는지를 확인하는 방식으로 동작

 

Update 함수에서 매프레임마다 입력값을 확인하여 이동과 점프와 같은 로직을 수행

public float moveSpeed = 10.0f;
void Update()
{
    float h = Input.GetAxis("Horizontal");
    float v = Input.GetAxis("Vertical");

    Vector3 moveDir = (Vector3.forward * v) + (Vector3.right * h);

    transform.Translate(moveDir.normalized * Time.deltaTime * moveSpeed);

    // 점프 키 입력 여부 확인
    if(Input.GetKey(KeyCode.Space))
    {
        //점프 로직 실행
    }
}

 

입력장치로의 전환이 어려움, 이동 및 점프를 모바일 디바이스의 스크린 터치로 변경할 경우 소스코드를 다시 작성해야 하는 번거로움이 있음 Update 함수는 프레임마다 호출되는 함수이기 때문에 프레임마다 입력값을 확인해야되서 성능이 떨어짐

 

새로운 Input System 의 특징

외부 입력장치와 동작하는 코드를 완벽하게 분리할 수 있음

코드에서 어떤 장치로부터 입력 됐는지를 확인할 필요 없음, 다른 입력장치로 변경했을 경우 단순히 바인딩 정보만 변경하여 적용가능 하기 때문에 소스코드 수정 없이 쉽게 적용가능

 

Input System 의 구조

Input System 은 Input Actions 에셋을 생성하여 각종 입력값을 정의하고 할당

Action Maps, Actions, Properties영역으로 구분됨

 

핵심 개념은 Action 과 Binding

Action : 게임 내의 행동, 동작을 의미 ( 캐릭터로 예를 든다면 이동, 회전, 점프, 공격, 방어)

Binding : Action을 실제 물리적인 입력장치와 매핑하는 것(Jump 액션의 경우 키보드 스페이스를 눌렀을 때 동작하게 하기 위한 정보를 설정)

Action Map : 앞서 정의한 여러 Action 의 그룹 (게임에는 주인공 캐릭터의 조작을 위한 입력 시스템, UI 시스템이 있다고 가정하면 Action Map을 생성하여 관리)

Input System 의 환경 설정

새로운 프로젝트를 Warrior라는 이름으로 지정하고 생성한다.

기존 폴더의 이름을 01.Scenes 로 변경하고 02.Scripts 폴더만 생성한다.

 

Input System 패키지 설치

window - Package Manager

Input System 다운 받기 이때 Packages : Unity Registry 로 변경하고 Import 

아래와 같은 경고 문구가 뜨면 Yes 버튼 클릭하기

 

 

 

Active Input Handling

유니티 에디터가 재시작된 후 프로젝트가 새로운 Input System으로 설정이 변경됐는지 확인해보기

Edit - Project Settings - Player 섹션 - Other Settings - Active Input Handling - Input System Package (New)라고 설정 되어 있는지 확인

Input Manager (Old) : Active Input Handing 속성인 예전 방식

Input System Package  (New) : 새로운 방식

Both : 둘다 사용

 

테스트 환경 제작

  • Resources / Models : Warrior 패키지
  • Resources / Textures : Image 패키지

아래 사이트에서 참고하여 받기

[Unity Course 2] 02. 게임 개발 준비 : 에셋 준비하기 — 첨부엉의 게임개발일지 (tistory.com)

 

[Unity Course 2] 02. 게임 개발 준비 : 에셋 준비하기

위키북스 출판사 이재현 저자님 의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.게임 개발 준비 : 에셋 준비하기캐릭터 모델 임포트하기해당 책에서는 https://github.com/IndieGameMaker/UnityB

splash0wl.tistory.com

Plane 오브젝트를 추가하고 Transform 의 scale을 위와 같이 설정한다.

Material을 연결하고 Warrior모델을 드래그하여 씬뷰에 추가한다.

 

아래 링크는 유니티의 Examples의 리포지토리로 여기서 모델을 가져왔다.

Unity-Technologies/UniversalRenderingExamples: This project contains a collection of Custom Renderer examples. This will be updated as we refine the feature and add more options. (github.com)

 

GitHub - Unity-Technologies/UniversalRenderingExamples: This project contains a collection of Custom Renderer examples. This wil

This project contains a collection of Custom Renderer examples. This will be updated as we refine the feature and add more options. - Unity-Technologies/UniversalRenderingExamples

github.com

 

Warrior_bindpose 를 선택하여 Animator 에 애니메이터컨트롤러를 연결해준다.

 

Input Action 에셋

Input System을 사용하기 위해서는 Input Action에셋을 생성해야됨

 

Input Action 에셋을 생성하는 방법은 두가지

  1. Asset - Create - Input Action 
  2. Warrior 캐릭터에 Player Input 스크립트를 추가한 후 Input Action을 생성하는 Create Action을 선택

이름은 MainActions으로 변경하고 Scripts 폴더 하위에 생성한다.

 

Control Schemes

좌측 상단의 No Control Schemes  콤보박스를 클릭하고 Add Control Scheme를 선택하면 새로운 Scheme 를 생성함

 

PC와 Mobile 두개의 Scheme를 생성한다.

All Control Schemes 로 설정하고 

PlayerActions 라는 이름의 ActionMaps를 생성한다.

Move 라는 이름의 Actions 을 생성하고 Action 속성은 Value, Vector 2로 설정하고 Add Up,Down, Left, Right로 바인딩을 새로 만든다.

2D Vector 라는 이름을 WASD로 변경한다.

 

바인딩 속성 설정

No Binding 이라는 의미는 아직 연결 정보를 설정하지 않았다는 것을 의미

 

계층 구조에서 직접 선택

Up 항목에서 Path 를 선택하면 계층 구조를 따라서 선택할 수 있다

Keyboard - By Location of Key - W

 

Listen 버튼

Listen 버튼을 클릭하면 입력 대기 상태가 되며 키를 입력하면 바인딩 목록으로 표시됨

[T] 버튼

<Keyboard>/s와 같이 작성해도 바인딩 정보를 설정할 수 있다.

 

세가지 방법중 편한 방법으로 마지막 Right 도 연결

 

이동 동작의 바인딩 추기

주인공 캐릭터의 이동을 다음과 같이 두 쌍의 키 입력값으로 조작하기로 했을 경우 화살표 키를 매핑한 바인딩을 하나 더 추가

 

  • W A S D 키
  • 화살표 키

위와 같이 하나의 바인딩을 Arrow Key라는 이름으로 생성하고 화살표 키를 연결해준다.

 

공격 동작의 액션과 바인딩 추가

 

Attack 이라는 이름의 Actions 을 추가한 후에 Action Type속성은 Button으로 설정하고 Space 를 바인딩 해준다.

 

반응형