⚙️ 1. Collider 물리 속성 (Physical Material)
Unity
- Physic Material 로 설정
- Friction (마찰력) : 0 → 미끄럽게 (예: 얼음)
- Bounciness (반발력) : ↑ 튀게 (예: 고무공)
- Rigidbody 와의 충돌 시 이 값들이 물리 계산에 반영되어
→ 움직임, 반응이 달라짐
Unreal
- Physical Material 로 동일한 역할
- 표면의 물리 속성(마찰, 밀도, 반발, 소리 등)을 정의
- 예: 총알이
- 철판에 맞으면 → 금속 소리
- 나무에 맞으면 → 나무 소리
🧱 2. Layer / Collision 설정 (충돌 필터링)
Unity
- Layer + Physics Matrix 로 충돌 여부 제어
- 메뉴: Edit > Project Settings > Physics > Layer Collision Matrix
- 예시:
- Player ↔ Enemy ✅ 충돌
- Player ↔ Ignore ❌ 충돌 안 함
- 코드로도 가능
-
Physics.IgnoreCollision(collider1, collider2);
Unreal
- Object Channel + Collision Presets 사용
- 대표 채널: Pawn, WorldStatic, Projectile 등
- 각 관계를 Block / Overlap / Ignore 로 지정 가능
🚫 3. Transform.position 으로 이동 시 Collider 무시
문제 원인
- transform.position = ... 은 Physics Engine을 거치지 않음
→ 충돌, 반발, 중력 계산이 무시됨
해결 방법
- Rigidbody 가 있는 오브젝트는 Transform 직접 이동 금지
✅ 대신 사용:→ 이렇게 해야 물리 충돌이 정상 작동 -
// FixedUpdate 내에서 rigidbody.MovePosition(targetPosition); // 또는 rigidbody.AddForce(force); rigidbody.velocity = direction * speed;
⏱ 4. Update vs FixedUpdate
구분실행 주기주요 용도비고
| Update() | 매 프레임마다 (FPS 의존) | 입력, 애니메이션 | 물리 계산 X |
| FixedUpdate() | 고정 시간 간격 (보통 0.02초) | 물리 연산 (Rigidbody, Force) | Physics 연동 ✅ |
👉 정리
- 입력(Input) → Update()
- 물리(Physics) → FixedUpdate()
- transform.position 직접 이동 ❌ (Collider 무시됨)
🧩 최종 요약
항목역할 / 주의점
| Physic / Physical Material | 표면 성질 (마찰, 반발 등) |
| Layer / Channel | 어떤 객체끼리 충돌할지 결정 |
| Transform.position | 물리 무시 (Rigidbody 사용 시 절대 직접 이동 ❌) |
| Update vs FixedUpdate | 입력 vs 물리 프레임 구분 |
'Unity > RTS' 카테고리의 다른 글
| Behavior tree (0) | 2025.10.22 |
|---|---|
| Navigation Mesh (0) | 2025.10.04 |
| 필수 패키지 (0) | 2025.10.04 |