유니티(Unity) 입문자 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 Unity 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
Input Manager
New Input System에 대해 알려면 먼저 Input Manager에 대해 알면 좋습니다. 인풋 매니저(Input Manager)는 게임에서 사용자의 입력을 관리하는 시스템으로 New Input System 이전에 사용되던 입력 방식입니다. 인풋 매니저를 통해 키보드, 마우스, 조이스틱, 터치스크린 등 다양한 입력 장치로부터 입력을 받아 처리할 수 있습니다.
인풋 매니저는 유니티 에디터의 [Edit] > [Project Settings] > [Input]에서 설정할 수 있습니다. 아래는 실 사용 이미지입니다.
Axes 토글을 내리면 Horizontal, Vertical, Fire1 등 다양한 옵션이 있습니다.
New Input System
유니티에서 New Input System은 기존의 Input Manager를 대체하는 새로운 입력 시스템입니다. Unity 2019.1 버전부터 도입되었으며, 보다 유연하고 확장 가능한 입력 관리 기능을 제공합니다.
New Input System이 도입된 이유
최근 몇 년간 기술의 발전으로 미디어 소비 방식이 크게 변화했습니다. 과거에는 주로 콘솔과 PC에서 게임을 즐겼다면, 이제는 모바일과 VR로 그 영역이 확장되었습니다. 이에 따라 새로운 기기와 컨트롤 방식에 대한 요구 사항이 증가하고 있습니다.
대표적으로 콘솔, PC에만 소비하는 방식에서 모바일, VR로 확장 되었습니다. 콘솔, PC, 모바일은 각각 고유한 방식으로 컨트롤됩니다. 특히 VR은 전통적인 콘솔이나 PC와 비교했을 때 컨트롤해야 할 요소가 훨씬 더 많아졌습니다. 이러한 변화에 대응하기 위해 유니티는 New Input System을 도입하였습니다.
New Input System은 다양한 플랫폼 간의 일관성과 유연성을 확보하는 데 중점을 두고 설계되었습니다. 이를 통해 개발자는 각 플랫폼의 특성을 고려하면서도 일관된 입력 처리를 구현할 수 있게 되었습니다. 또한, 새로운 입력 장치와 컨트롤 방식을 보다 쉽게 지원할 수 있게 되었습니다.
New Input System의 사용법
1. 설치 (Input System)
1️⃣ [Window] > [Package Manager]로 들어가서 패키지 매니저 창을 띄웁니다.
2️⃣ 왼쪽 상단의 [Packages: In Project] > [Unity Registry]로 들어갑니다.
3️⃣ 바뀐 창의 오른쪽 상단에 검색창에 “Input System”이라고 검색합니다.
검색하면 다음과 같은 창이 열립니다.
4️⃣ input System 검색창 아래의 [Install] 버튼을 눌러 설치해줍니다.
다시 시작 창이 뜨면 [Yes]를 눌러 유니티 엔진을 다시 시작 해줍니다.
2. InputAction
InputAction은 특정 동작이나 이벤트를 입력하는 기능입니다. 예를 들어, "Jump", "Fire", "Move" 등의 액션을 정의할 수 있습니다. 사용 방법은 아래와 같습니다.
1️⃣ 프로젝트 창에서 오른쪽 마우스를 눌러 [Create] > [Input Actions]을 만들어줍니다
2️⃣ 이름은 PlayerActions으로 지어주겠습니다.
3️⃣ 더블 클릭하면 해당 창이 나옵니다.
4️⃣ 왼쪽 상단의 [No Control Schemes] > [Add Control Scheme…]를 클릭합니다.
5️⃣ PC로 조작한다면 PC 입력 후 [Save]를 누릅니다. 아래와 같은 창을 확인하실 수 있습니다.
6️⃣ 왼쪽 상단 Action Maps 오른쪽에 +가 있습니다. +를 눌러 Action Maps을 추가해줍니다.
Action Maps의 이름은 임의로 설정하면 됩니다. 저는 PlayerControls으로 지어주겠습니다.
New action의 이름은 Move로 지어주겠습니다.
7️⃣ Move의 Action Type은 Value, Control Type은 Vector2로 설정해줍니다.
Move에 있는 +를 눌러 [Add Up\Down\Left\Right Composite] 클릭해 생성해줍니다. 기존에 있던 No Binding은 delete키로 지워주시면 됩니다.
8️⃣ Up을 선택하고 Path를 눌러 W를 입력합니다.
W [Keyboard]가 나오면 엔터를 누릅니다.
해당 방법으로 값이 잘 안나오는 경우는 분류된 곳에서 찾아 들어가는 방법도 있습니다.
1️⃣ Down은 S, Left는 A, Right는 D 값을 넣어줍니다.
2️⃣ Actions에 있는 +를 눌러 새로운 액션을 만들어줍니다.
3️⃣ 이름을 Attack으로 지어주고 Space를 넣습니다.
4️⃣ 왼쪽 상단의 [Save Asset]을 눌러 저장을 합니다. 또는 오른쪽 상단의 Auto-Save를 체크해 자동 저장을 할 수 있습니다.
3. Player Input
PlayerInput은 플레이어 캐릭터나 개체의 입력을 처리하는 데 특화된 컴포넌트입니다. 사용 방법은 아래와 같습니다.
1️⃣ 큐브에 Player Input 컴포넌트를 추가합니다.
플레이어 캐릭터나 입력을 받을 게임 오브젝트를 선택하고 인스펙터 창에서 "Add Component" 버튼을 클릭하고, "Player Input"을 검색하여 추가하면 됩니다.
2️⃣ PlayerInput 컴포넌트의 인스펙터 창에서 "Actions" 속성을 찾습니다. "Create Actions..." 버튼을 클릭하여 새로운 입력 액션 매핑을 생성하거나, 기존의 입력 액션 매핑을 할당합니다.
3️⃣ PlayerController 스크립트를 사용하여 간단한 플레이어 이동과 공격 기능을 구현할 수 있습니다. 스피드를 10정도 설정하고 WASD로 큐브를 움직일 수 있으며, 스페이스바로 Attack 로그를 출력할 수 있습니다.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.InputSystem; public class PlayerController : MonoBehaviour { Vector2 inputVec2; Vector3 moveDirection; public float speed; void Start() { } void Update() { transform.Translate(moveDirection * Time.deltaTime * speed); } void OnMove(InputValue value) { inputVec2 = value.Get<Vector2>(); if(inputVec2 != null) { moveDirection = new Vector3(inputVec2.x, 0, inputVec2.y); } } void OnAttack() { Debug.Log("Attack"); } }
내일배움캠프는 개발에 필요한 핵심만 배웁니다
지금까지 꼭 필요한 유니티 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 게임 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
CREDIT
글 | 김형수 내일배움캠프 수료생
편집 | 정효재 팀스파르타 에디터
취업 준비, 어디서부터 시작해야 할지 모르겠다면?
🧐비전공자인데 IT 업계 취업할 수 있을까?
😟프로젝트 경험이 부족한데, 어떻게 준비해야 할까?
🥺IT 기업으로 이직하고 싶은데 뭐부터 시작해야 할까?
이런 고민을 하고 있다면, 내일배움캠프의 IT 취업 컨설팅을 받아보세요.
취업 코칭 전문가들이 여러분의 고민을 해결해 드립니다.
다음 링크에 이메일을 입력하시면 메일로 1:1 커리어 상담권과 취준 자료집을 보내드릴게요.
Share article
Subscribe to our newsletter