본문 바로가기
Unity/RTS

Physical Material, Layer 설정, Update vs Fixed update

by sehunbang 2025. 10. 4.

⚙️ 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