07/15 Input과 충돌처리

심지태
∙∙조회 6
07/15 Input과 충돌처리

입력 읽기: Input.GetAxis

Unity는 자주 쓰는 키 묶음을 축(Axis)이라는 이름으로 미리 정리해 두었습니다.

축 이름연결된 키값의 범위
HorizontalA/D, ←/→-1 ~ +1
VerticalW/S, ↑/↓-1 ~ +1

방향 만들기: 벡터와 normalized

Vector3는 3D 벡터를 (x, y, z) 세 성분으로 담는 타입

게임 속 값벡터인 이유
위치 (Position)원점에서 어느 쪽으로 얼마나 떨어졌는가
이동 방향어느 쪽으로 가는가
속도 (velocity)어느 쪽으로 얼마나 빠르게 가는가
힘 (AddForce)어느 쪽으로 얼마나 세게 미는가

 

 

이동 적용하기: Transform과 Rigidbody

방식코드특징
Transform 직접 이동transform.Translate(...)위치를 즉시 바꿉니다. 벽을 뚫을 수 있습니다
Rigidbody 물리 이동rb.MovePosition(...)물리 시스템과 함께 움직입니다. 충돌이 자연스럽습니다

Collision과 Trigger: 부딪힘과 감지

구분CollisionTrigger
물리 반응밀어냅니다 (통과 불가)없습니다 (통과)
콜백 함수OnCollisionEnterOnTriggerEnter
설정Collider 기본 상태Collider의 Is Trigger 체크
쓰는 곳벽, 바닥, 장애물아이템 획득, 목표 지점 체크

 

정리 질문 (퀴즈)

  1. Collision과 Trigger의 차이는 무엇인가요? -> 충돌 판정이 있을 때, 오브젝트를 통과시키는지 여부
  2. 물리 이동을 FixedUpdate에 넣는 이유는 무엇인가요? -> 컴퓨터마다 초당 프레임이 다르기 때문에, 컴퓨터들의 사양에 상관 없이 안정적으로 동작시키기 위해서
  3. 대각선 이동에 normalized를 쓰는 이유는 무엇인가요? -> 대각선 이동은 가로·세로 속도가 합쳐져 벡터의 크기가 더 커지므로, 정규화하여 같은 속도의 방향 데이터만을 추출한다.
  4. 충돌 콜백이 오기 위한 최소 조건은 무엇인가요? -> 양 오브젝트 둘 다 콜라이더를 가지고, 최소 한 쪽에 리지드바디를 가지고 있어야함
  5. CompareTag를 문자열 비교보다 권장하는 이유는 무엇인가요? -> 문자열 비교보다 성능이 약간 더 좋음.
  6. Mesh Collider를 아무 곳에나 쓰지 않고 Box/Sphere/Capsule을 우선 고려하는 이유는 무엇인가요? -> Mesh Collider는 폴리곤의 수가 많아서 성능 상에 문제가 생긴다.

Input System 맛보기