Unity C# 기초집LESSON 08
입력 처리 기초
난이도초급
예상 시간40분
선수지식7강 시간 기반 이동
8강. 입력 처리 기초
1. 이번 강의에서 해결할 문제
PackageMover가 키보드와 터치 API까지 직접 읽으면 모바일 입력으로 바꿀 때 이동 코드도 수정해야 합니다. 입력 해석과 이동 명령을 분리합니다.
2. 학습 목표
3. 핵심 개념
이 과정은 입력 흐름을 먼저 보기 위해 기본 UnityEngine.Input 예시를 사용합니다. 프로젝트 설정이 새 Input System 전용이면 Package Manager와 Player 설정이 필요합니다. 확장성과 장치 지원이 필요할 때는 현재 에디터와 호환되는 공식 Input System 패키지로 같은 명령 인터페이스를 구현합니다.
4. 단계별 실습
C# · 파일 경로: Assets/DeliverySorter/Scripts/Input/PackageInputController.cs
PackageInputController.cs
using UnityEngine;
public sealed class PackageInputController : MonoBehaviour
{
[SerializeField] private PackageMover controlledPackage;
[SerializeField] private Camera worldCamera;
private void Awake()
{
if (worldCamera == null) worldCamera = Camera.main;
}
private void Update()
{
if (controlledPackage == null) return;
float keyboard = Input.GetAxisRaw("Horizontal");
if (Mathf.Abs(keyboard) > 0.01f)
{
controlledPackage.SetHorizontalInput(keyboard);
return;
}
bool pointerHeld = Input.GetMouseButton(0);
if (!pointerHeld || worldCamera == null)
{
controlledPackage.SetHorizontalInput(0f);
return;
}
Vector3 world = worldCamera.ScreenToWorldPoint(Input.mousePosition);
float direction = Mathf.Sign(world.x - controlledPackage.transform.position.x);
controlledPackage.SetHorizontalInput(direction);
}
}
Inspector 연결 작업
Systems/InputControllerGameObject를 만들고 스크립트를 추가합니다.- Controlled Package에 현재 PackagePrototype, World Camera에 Main Camera를 연결합니다.
- A/D 또는 방향키, 마우스 누름으로 좌우 이동을 확인합니다.
- 모바일에서는 마우스 API가 첫 터치를 모사할 수 있지만 멀티터치·UI 분리는 Input System으로 확장합니다.
5. 코드가 동작하는 이유
입력 클래스는 장치 값을 -1~1 이동 의도로 변환하고 PackageMover는 그 값이 키보드인지 터치인지 알지 못합니다. ScreenToWorldPoint는 화면 픽셀을 카메라 월드 좌표로 변환합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2입력 처리 기초 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
8강. 입력 처리 기초 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.