07/15 Input과 충돌처리

입력 읽기: Input.GetAxis
Unity는 자주 쓰는 키 묶음을 축(Axis)이라는 이름으로 미리 정리해 두었습니다.
| 축 이름 | 연결된 키 | 값의 범위 |
|---|---|---|
Horizontal | A/D, ←/→ | -1 ~ +1 |
Vertical | W/S, ↑/↓ | -1 ~ +1 |
방향 만들기: 벡터와 normalized

Vector3는 3D 벡터를 (x, y, z) 세 성분으로 담는 타입
| 게임 속 값 | 벡터인 이유 |
|---|---|
| 위치 (Position) | 원점에서 어느 쪽으로 얼마나 떨어졌는가 |
| 이동 방향 | 어느 쪽으로 가는가 |
| 속도 (velocity) | 어느 쪽으로 얼마나 빠르게 가는가 |
| 힘 (AddForce) | 어느 쪽으로 얼마나 세게 미는가 |
이동 적용하기: Transform과 Rigidbody
| 방식 | 코드 | 특징 |
|---|---|---|
| Transform 직접 이동 | transform.Translate(...) | 위치를 즉시 바꿉니다. 벽을 뚫을 수 있습니다 |
| Rigidbody 물리 이동 | rb.MovePosition(...) | 물리 시스템과 함께 움직입니다. 충돌이 자연스럽습니다 |
Collision과 Trigger: 부딪힘과 감지
| 구분 | Collision | Trigger |
|---|---|---|
| 물리 반응 | 밀어냅니다 (통과 불가) | 없습니다 (통과) |
| 콜백 함수 | OnCollisionEnter | OnTriggerEnter |
| 설정 | Collider 기본 상태 | Collider의 Is Trigger 체크 |
| 쓰는 곳 | 벽, 바닥, 장애물 | 아이템 획득, 목표 지점 체크 |
정리 질문 (퀴즈)
- Collision과 Trigger의 차이는 무엇인가요? -> 충돌 판정이 있을 때, 오브젝트를 통과시키는지 여부
- 물리 이동을 FixedUpdate에 넣는 이유는 무엇인가요? -> 컴퓨터마다 초당 프레임이 다르기 때문에, 컴퓨터들의 사양에 상관 없이 안정적으로 동작시키기 위해서
- 대각선 이동에 normalized를 쓰는 이유는 무엇인가요? -> 대각선 이동은 가로·세로 속도가 합쳐져 벡터의 크기가 더 커지므로, 정규화하여 같은 속도의 방향 데이터만을 추출한다.
- 충돌 콜백이 오기 위한 최소 조건은 무엇인가요? -> 양 오브젝트 둘 다 콜라이더를 가지고, 최소 한 쪽에 리지드바디를 가지고 있어야함
- CompareTag를 문자열 비교보다 권장하는 이유는 무엇인가요? -> 문자열 비교보다 성능이 약간 더 좋음.
- Mesh Collider를 아무 곳에나 쓰지 않고 Box/Sphere/Capsule을 우선 고려하는 이유는 무엇인가요? -> Mesh Collider는 폴리곤의 수가 많아서 성능 상에 문제가 생긴다.
Input System 맛보기




