본문 바로가기
Unity/TIL

Input System

by 김차루 2024. 5. 24.
스파르타 내배캠 28일차 TIL
C1조_ 1조라도 안 보이면

 

 

 

게임 개발 숙련 주차가 시작됐다. 이번주는 유니티 3D를 배우게 된다. 간단한 3D RPG 생존 게임을 진행하게 될 것 같다. 오늘은 발제와 SA, 2시간 특강 때문에 1-4까지 밖에 듣지 못했다. 앞으로 월요일까지 들어야지 개인 프로젝트를 할 수 있을 것 같은데 스케줄을 맞출 수 있을지 의문이다. 그래도 해봐야지!

 

 

오늘 배운 것은 InputSystem 복습과 RayCast를 이용하는 방법에 대해 배웠다. 

 

 

InputSystem

먼저 Unity에서 제공하는 InputSystem 에셋을 다운 받는다. 

inputSystem 설치

그 후, Project에서 Input Actions을 하나 생성한다. 

Input Actions 생성

생성하고 Edit asset을 통해 필요한 행동에 맞는 액션을 만든다. 

Action 생성

Action Type에서 만들고 싶은 행동에 맞는 키를 생성할 수 있다. 예를 들어 플레이어의 움직임은 Vector 값을 필요하기 때문에 Value-Vector2를 얻는다고 설정하고 움직이는 방향에 키를 설정한다. 또 다른 예로, 만약에 E 키로 아이템을 얻고 싶다면 Value가 아닌 Button을 선택하고 E를 지정해주면 된다. 

값, 키 설정

 

이런 식으로 원하는 행동에 대한 값을 정하고 나면 player 오브젝트에 player input 컴포넌트를 추가하고 만들어둔 inputAction을 넣어준다.

player input 컴포넌트

지금부터 중요한 내용이다. 그림에서는 지정된 행동을 가져와 사용할 수 있는 방법 중 invoke Unity Events를 사용했다. 이 방법은 UI-Button 컴포넌트에서 이벤트를 사용한 것과 같은 방법이다. 그림으로 설명하자면, event에 player 스크립트를 정용하고 Player에 정의한 On행동() 메소드가 불러와지게 설정한 것이다. Behavior에서 이 방법을 선택할 수 있는데 종류는 다음과 같다. 

player input 컴포넌트 - behavior

간단히 정리하면

  • Send Messages : input system에서 정의한 함수 사용(OnMove, OnRun, etc...)
  • Broadcast Messages : 위와 같지만, 같은 경우 하위 계층 오브젝트들까지 제어 가능
  • Invoke Unity Events : 유니티 이벤트 사용
  • Invoke C Sharp Events : C# 이벤트 사용

직관적으로 움직임을 정의하려면 Invoke Unity Events가 제일 괜찮을 것 같다. 이 이후에는 움직임 로직을 작성해야 하는데 움직임을 구현하는 방식은 워낙 다양해서 이는 생략하겠다. 

 

 

Raycast는 오늘 강의 마지막 중에 배운 내용인데 강의를 따라 구현하던 중 의문 점이 생겨서 이건 내일 튜터님께 물어보고 작성을 해야할 것 같다. Raycast를 어떻게 왜 이용하는지는 이해했지만 강의 내에서 어떻게 범위를 정했는지 아직 이해하지 못했다. 

 

 

마무리하며

TIL 분량과 질이 천차만별인 블로그는 내 거 밖에 없겠지...? ㅎㅎ 하지만 프로젝트를 진행할 땐 아직 TIL 쓸 거리가 많이 없어서 잘 못 적는 것 같다. 적을 내용이 있다면 오늘처럼은 적을 수 있을 것 같은데... 그래서 다음 프로젝트 때는 과정을 한 번 적어볼까 한다. 오늘부터 다시 잘 적기로 했으니 쭉 잘 쓸 수 있기를. 아무튼 내일 여쭤보고 Raycast 수정해야징

 

'Unity > TIL' 카테고리의 다른 글

3번째 개인 프로젝트 구상 및 플레이어 작업  (0) 2024.05.28
Unity 조명(Lighting)  (0) 2024.05.27
3번째 팀 프로젝트 제출 및 마무리 (게임개발 입문)  (0) 2024.05.23
TIL  (1) 2024.05.22
Unity 컬렉션  (1) 2024.05.21