프로젝트/언데드 서바이벌 프로젝트

2.5장. Player 이동 - Input System 활용

MuscleDeveloper5683 2023. 9. 25. 22:23
728x90
SMALL

 

nput SysTem 이란 ?

그동안 개발을 할때 유니티 Input Manager에 입력값들로 캐릭터의 이동을 구현했다. 프로젝트를 만들면서 자료를 찾아보던 도중 유니티 2019 버전부터 제공하는 Input System을 사용해 보기로 했다.

 

 

게임이라는 것은 특정 플랫폼 하나만을 위해 개발하지 않는다. PC, 콘솔, 핸드폰 등등... 많은 플랫폼에서 다양하게 즐길 수 있는데 문제는 플랫폼 마다 사용하는 입력 방식이 다르다.

 

 

아래 예시와 같이 캐릭터의 이동을 위해 입력값을 준다면 각각의 다른 플랫폼에선 다른 키값을 설정해줘야하는 번거로움이 있다.

 

PC에서의 캐릭터 움직임 입력값

 

VR에서 캐릭터 움직임 입력값

 

 

우선 Input System을 설치해보자.

 

[설치 방법]

Window -> Package Manager -> Unity Registry -> Input System 을 Install 해주자.

 

 
 

Project -> Create -> Input Actions 가 생성되면 정상적인 설치완료

 

 

 

[Player 적용]

1. Player 에 Player Input 컴포넌트 추가

Player Input 컴포넌트를 추가시킨 모습

 

 

2. 액션 생성

Create Actions -> 해당 프로젝트 안에 Player 로 생성

 

파일명.Inputactions를 해당 Assets 파일에 생성시켜주는 모습

 

 

매번 저장하기 귀찮으니 Auto - Save를 활성화 시키자

위 창에서 수정했다면 Save Asset 을 눌러 꼭 저장하자

 

Action Maps - 카테고리 [사용할 키를 Map의 이름으로 저장]

Actions - [사용될 액션을 입력 받을 형태]

Action Type - [액션 타입 이다]
value - 들어온 입력값에 따라 결정
Button - 버튼 클릭의 여부로 결정

Control Type - 어떤 자료형으로 리턴값을 줄건지 결정

Interactions - 인풋의 호출 타이밍 지정(값이 변할 때)

Processors - 인풋의 값을 후보정

 

3. 스크립트 적용

네임 스페이스 생성 (InputSystem을 사용하기 위한 네임스페이스)
using UnityEngine.InputSystem;
Input System을 이용한 이동 스크립트

 

InputValue 매개변수 선언 후 InputVector값에 넣어준다.
InputValue 안에서 이미 normalized를 사용하기 때문에 위 FixedUpdate 에서 제외 해도 된다.

 

728x90