Unity C# 기초집LESSON 11
Rigidbody와 Collider
난이도초급
예상 시간40분
선수지식10강 택배 생성
11강. Rigidbody와 Collider
1. 이번 강의에서 해결할 문제
Transform으로 움직이는 택배에 Collider를 붙였지만 빠른 속도에서 판정이 불안정합니다. 2D 물리 오브젝트의 몸과 경계를 명확히 구성합니다.
2. 학습 목표
3. 핵심 개념
Collider2D는 충돌 모양이고 Rigidbody2D는 물리 시뮬레이션에 참여하는 몸입니다. 이 게임의 택배는 중력 대신 일정 속도로 제어하므로 Dynamic Rigidbody2D에 Gravity Scale 0을 사용하고, 회전은 고정합니다.
4. 단계별 실습
C# · 파일 경로: Assets/DeliverySorter/Scripts/Packages/PackageMotor2D.cs
PackageMotor2D.cs
using UnityEngine;
[RequireComponent(typeof(Rigidbody2D))]
public sealed class PackageMotor2D : MonoBehaviour
{
[SerializeField, Min(0f)] private float fallSpeed = 2f;
[SerializeField, Min(0f)] private float horizontalSpeed = 5f;
private Rigidbody2D body;
private float horizontalInput;
private void Awake()
{
body = GetComponent<Rigidbody2D>();
}
public void SetHorizontalInput(float value)
{
horizontalInput = Mathf.Clamp(value, -1f, 1f);
}
private void FixedUpdate()
{
Vector2 velocity = new(horizontalInput * horizontalSpeed, -fallSpeed);
body.MovePosition(body.position + velocity * Time.fixedDeltaTime);
}
}
Inspector 연결 작업 · Package.prefab
- Rigidbody2D를 추가해 Body Type
Dynamic, Gravity Scale0, Freeze Rotation Z를 설정합니다. - BoxCollider2D의 크기를 Sprite 안쪽에 맞춥니다.
- 기존 Transform 이동 Component는 제거해 이동 경로를 하나로 만듭니다.
- PackageInputController의 대상 타입을 PackageMotor2D로 맞춥니다.
5. 코드가 동작하는 이유
Rigidbody2D가 위치를 소유하고 고정 물리 간격마다 MovePosition으로 다음 위치를 받습니다. RequireComponent는 스크립트에 필요한 Rigidbody2D 구성을 명시해 누락 가능성을 줄입니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2Rigidbody와 Collider 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
11강. Rigidbody와 Collider 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.