240124-TIL

2024. 1. 24. 21:14내일배움캠프

1월 24일

 

유니티 공부와 팀 프로젝트 두가지 일정을 모두 소화하려고 하니 몸이 10개라도 부족할 지경이다.

 

분신술을 써가지고 한쪽에는 유니티 공부를 한쪽은 팀 프로젝트를 시킬수 있으면 좋겠다...

 

그래서 이번 TIL은 분신술을 어떻게 쓰는지 정리해 보도록 하자

 

농담이었고 사실 지난시간에 같이 정리할까 하다 아직 학습이 부족하다고 생각해서 

 

더 학습을 한 다음 돌아온 녀석이 있다.

 

New Input System

더보기

오늘은 New Input System에 대해서 정리해보도록 하자

 

기존에 나는 플레이어 캐릭터를 움직이기 위해

 

Input.GetKey(...)

 

이 녀석을 자주 사용했었다. 하지만 우리가 앞으로 만들 아니 만들어야 할 게임들은

 

특정 플랫폼 하나만을 겨냥하고 개발하는 경우는 거의 없다.

 

당장 내가 하고 있는 게임들만 해도 요즘은 PC / 모바일 둘다 구동이 가능하니까 말이다.

 

기존 Unity Input System은 이런 플랫폼마다 다른 입력방식에 대해 대응하기가 어려웠다면

 

New Input System을 사용한다면 다양한 플랫폼에서 빠르게 컨트롤 설정이 가능해진다.

 

이렇게 좋은 New Input System을 사용하려면?

 

Package Manager 에서 Input System을 설치해야한다

 

Input System이 import가 완료 되었다면 우리는 Input Actions를 생성할수 있게 된다.

Project -> Create -> Input Actions

 

이제 이 Actions 파일을 생성하게 되면 우리는 다음과 같은 창을 볼수가 있는데

 

 

왼쪽 상단의 No Control Schemes 부분을 선택하고 Add Control Scheme를 클릭하면?

 

해당 창에서 스키마 이름

 

+ 버튼을 누르면 어떤 컨트롤러의 입력을 받아 처리할건지 선택할 수 있다. 

 

PC의 경우 Keyboard와 Mouse를 설정하면 되겠지?

 

그 다음 Action Maps, Actions, properties를 설정해야하는데

 

Action Map은 내가 사용할 키를 Map 이름으로 지정하는걸 말한다. 나는 플레이어가 좌우로 움직이게 하기 위해서

 

Player 1이라는 이름의 map 하나를 만들었고 

 

Actions 부분에는 해당 맵을 받은 캐릭터가 어떤 액션에 사용될 키를 입력을 받을 것인지에 대한  형태를 설정하는데

 

왼쪽과 오른쪽 이동을 키보으 A버튼과 D버튼으로 하기위해 A와 D로 설정을 해줬다.

 

이때 키보드의 입력을 받은과 동시에 방향까지 내포되어있기 때문에 Properties 부분에서의 Action 타입은 Value로

 

캐릭터의 이동은 X와 Y값만 있으면 되기에 Vector2로 선택하여 주었다

 

이렇게 설정하고 저장을 끝내면 적용할 캐릭터의 Inspector 창에서 Player Input 컴포넌트를 부착해줘야한다

 

 

Player Input 창에서는 위 형식대로 만들어 두었던 Input Actions을 넣어주고 Default Map을 Player1 으로

 

설정해주면 끝이난다. 이제 기본적인 세팅은 끝이 났다

 

지금부터는 키 내용을 Script에 전달하고 값에 따라 처리를 하도록 만들면 된다.

 

 

우리는 Behavior의 Send Messages 기능을 사용한다.

 

Send Messages 기능을 사용하면 특정 키가 들어오면, 특정한 함수를 자동으로 호출하는 방식이다.

 

나는 Move를 만들어놓았다!

 

함수명이 "On + [Actions Name]" 으로 구성되는데 나는 움직이기 위해 "Move" 라고 만들어놓고

 

 

void OnMove(InputValue value)  // "Move" 에 해당하는 키 A,D를 입력했을때 자동 호출
{
	.....
}

 

해당 Actions의 키 입력이 들어왔을때 OnMove() 함수를 찾아가게 된다.

 

 

void OnMove(InputValue value)  // "Move" 에 해당하는 키 A,D를 입력했을때 자동 호출
{
	// 호출된 Onmove함수의 value값을 Vector2 Input값으로 저장
	Vector2 input = value.Get<Vector2>(); 
    
    // 해당 값을 활용하여 로직을 짜서 이동을 구현
    ....
}

 

의 형식으로 이동 로직을 구현할 수 있다.

오늘은 New Input System을 활용하여 이동 로직을 구현하는 방법에 대해서 살펴보았다.

 

새롭게 배운 방식이라 아직 이해가 부족한 부분 활용법이 미흡한 부분이 있는데

 

좀 더 많은 자료를 찾아보고 더 많은 활용법을 찾아봐야겠다.

 

1월 24일 TIL은 여기서 마치도록 하곘다.

'내일배움캠프' 카테고리의 다른 글

240126-TIL  (0) 2024.01.26
240125-TIL  (0) 2024.01.25
240123-TIL  (0) 2024.01.23
240122-TIL  (0) 2024.01.22
240118-TIL  (0) 2024.01.18