00 / ARRIVAL
1교시의 도착점
기능을 만드는 시간은 3교시입니다. 지금은 입력이 코드에 도착하기까지의 구조를 이해합니다.
- 01
Device, Control, Binding, Action을 서로 다른 말로 설명합니다.
- 02
왜 코드가 W키가 아니라 Move 행동을 읽어야 하는지 설명합니다.
- 03
상하좌우 입력을
Vector2 (x, y)값으로 바꿔 읽습니다. - 04
WASD, 방향키, 게임패드를 하나의 Action에 연결하는 이유를 설명합니다.
01 / RUN OF CLASS
60분의 설명 흐름
3주차의 자동 이동에서 출발해, 사용자의 의도가 물리 이동의 재료가 되는 지점까지 연결합니다.
입력을 행동으로 읽기
Lecture / professor-led
- 3주차와 연결
자동으로 움직이던 오브젝트에 “누가 방향을 정하는가?”라는 질문을 더합니다.
- 입력의 네 층
Device, Control, Binding, Action을 실제 예와 함께 분리합니다.
- Action Map
여러 행동을 상황별 묶음으로 관리하는 이유를 설명합니다.
- Vector2
상하좌우와 대각선을 두 축의 숫자로 읽고 크기를 비교합니다.
- Binding 설계
WASD, 방향키, 왼쪽 스틱을 하나의 Move에 묶습니다.
- 회수 질문
입력 신호가 Move 값이 되는 과정을 화면 없이 설명합니다.
02 / CONNECT
자동 이동에 ‘의도’를 끼워 넣습니다
3주차 코드는 방향이 항상 오른쪽으로 정해져 있었습니다. 이번 주에는 그 고정값을 사용자가 만든 값으로 바꿉니다.
Vector3.right
방향이 코드에 고정되어 있습니다. 사용자가 아무것도 하지 않아도 매 프레임 오른쪽으로 움직입니다.
moveInput
방향이 입력에서 옵니다. 입력이 없으면 (0, 0), 위를 누르면 (0, 1)이 됩니다.
03 / INPUT MODEL
키를 누른 순간부터 코드가 읽기까지
비슷해 보이는 단어를 “물건 → 부분 → 연결 규칙 → 게임 속 의미”의 순서로 정리합니다.
- 01Device
키보드, 마우스, 게임패드처럼 입력을 만드는 장치입니다.
- 02Control
W키, 방향키 위, 왼쪽 스틱처럼 장치 안의 한 조작부입니다.
- 03Binding
특정 Control을 게임 속 Action에 연결하는 규칙입니다.
- 04Action
Move,Jump처럼 게임이 이해하는 행동입니다. - 05Code value
코드는 Action이 만든
Vector2값을 읽습니다.
04 / ACTIONS
Action Map은 ‘지금 가능한 행동’의 묶음입니다
Action 하나는 한 가지 의미를 나타내고, Action Map은 함께 켜고 끌 행동들을 모읍니다.
무엇을 하려는가
Move라는 이름은 장치를 말하지 않습니다. 플레이어가 이동하려 한다는 게임의 언어입니다.
어떻게 그 뜻을 보낼까
WASD나 스틱은 Move를 만드는 여러 방법입니다. 나중에 키를 바꿔도 이동 코드는 그대로 둘 수 있습니다.
05 / VECTOR2
방향을 두 숫자로 표현합니다
Vector2는 X축과 Y축 값을 한 쌍으로 묶습니다. 부호는 방향을, 값의 크기는 입력의 세기를 나타냅니다.
| 조작 | X | Y | Vector2 | 읽는 말 |
|---|---|---|---|---|
| 입력 없음 | 0 | 0 | (0, 0) | 멈춤 |
| 오른쪽 | 1 | 0 | (1, 0) | X의 양의 방향 |
| 왼쪽 | -1 | 0 | (-1, 0) | X의 음의 방향 |
| 위 | 0 | 1 | (0, 1) | Y의 양의 방향 |
| 아래 | 0 | -1 | (0, -1) | Y의 음의 방향 |
| 오른쪽 위 | 1 | 1 | (1, 1) | 두 축을 동시에 사용 |
키보드
대체로 눌리지 않음은 0, 눌림은 1입니다. 방향에 따라 부호가 달라집니다.
(-1, 0, 1)게임패드 스틱
기울인 정도를 포함하므로 0과 1 사이의 소수도 나옵니다.
(0.42, 0.78)Vector2.ClampMagnitude(value, 1f)방향은 유지하면서 벡터의 길이만 최대 1로 제한합니다. 키보드 대각선과 아날로그 입력을 함께 다루기 좋습니다.
value.normalized길이를 항상 1로 바꿉니다. 스틱을 조금 기울인 입력도 최대 세기가 되므로, 아날로그 강도를 보존하려면 주의합니다.
06 / BINDINGS
네 개의 키를 하나의 2D 값으로 합칩니다
키 하나는 한 축의 한 방향만 표현합니다. 2D Vector Composite는 네 키를 묶어 하나의 Vector2를 만듭니다.
| Binding | Up | Down | Left | Right | 출력 |
|---|---|---|---|---|---|
| WASD / 2D Vector | W | S | A | D | Move / Vector2 |
| Arrows / 2D Vector | ↑ | ↓ | ← | → | |
| Gamepad | Left Stick | ||||
- 01
Map
Player - 02
Action
Move - 03
Type
Value / Vector2 - 04
Bindings
키 두 묶음 + 스틱
07 / READ A VALUE
코드는 Action의 현재값을 묻습니다
1교시에는 문법을 외우지 않습니다. 한 줄이 무엇을 요청하고 무엇을 돌려받는지만 읽습니다.
moveInput = moveAction.action.ReadValue<Vector2>();
moveInput = Vector2.ClampMagnitude(moveInput, 1f);
ReadValue<Vector2>()Move Action이 지금 만든 값을 Vector2 형태로 읽습니다. 어떤 장치가 값을 만들었는지는 이 줄의 관심사가 아닙니다.
ClampMagnitude(..., 1f)방향과 아날로그 세기는 보존하되, 길이가 1을 넘는 키보드 대각선만 제한합니다.
08 / RETRIEVAL
화면 없이 구조를 복원합니다
먼저 답을 말한 다음 펼쳐 확인합니다. 틀린 답은 실패가 아니라 다음 설명의 출발점입니다.
Q1. W키와 게임패드 스틱을 같은 Move에 연결하는 이유는?
물리적 조작은 다르지만 게임 속 의미가 모두 이동이기 때문입니다. 코드는 장치가 아니라 Move의 현재값만 읽을 수 있습니다.
Q2. 오른쪽과 위를 동시에 누르면 어떤 값인가?
오른쪽은 X가 1, 위는 Y가 1이므로 (1, 1)입니다. 길이가 1보다 커서 대각선 속도 제한이 필요합니다.
Q3. Action과 Binding의 차이는?
Action은 Move처럼 게임 속 의미이고, Binding은 W키나 스틱을 그 의미에 연결하는 규칙입니다.
Q4. 입력이 없을 때 Move의 값은?
(0, 0)입니다. 방향도 크기도 없으므로, 다음 교시의 물리 속도 역시 0이 됩니다.
Device는 ______이고, 그 안의 개별 조작부는 Control입니다.
Binding은 Control을 ______에 연결하는 규칙입니다.
코드는 Move Action이 만든 ______ 값을 읽습니다.
09 / OFFICIAL SOURCES
Unity 공식 자료
용어와 설정은 Unity 6.6 및 해당 Editor용 Input System 문서를 기준으로 정리했습니다.
- Input System package for Unity 6.6 ↗Unity 6.6 Editor에 릴리스된 Input System 패키지 정보
- Input Actions ↗Action, Action Map, Binding과 값 읽기의 공식 개념
- Install the Input System ↗Package Manager 설치와 입력 backend 활성화 절차