Unity/정보

[Unity] Unity6 Physics 2D : 2D 콜라이더 병합, Rigidbody2D API 변경

달시_Dalsi 2025. 2. 15. 23:37
728x90

Unity가 6로 넘어오면서 바뀐 2D물리관련이 있다고 합니다. 다음 네 가지 주요 변경사항에 대해 살펴봅니다.

  1. Composite Collider 2D
  2. Hinge Joint 2D
  3. Rigidbody2D의 변경된 API
  4. Slide Movement API

1. Composite Collider 2D

기존에는 박스나 타일맵 콜라이더만을 병합할 수 있었지만, Unity 6에서는 모든 유형의 콜라이더를 병합할 수 있습니다.
특히, 단순히 영역을 합치는 것을 넘어 병합(Merge), 교차(Intersect), 차이( Difference), 뒤집기(Flip) 중 하나를 선택할 수 있어 더욱 다양한 형태의 콜라이더 제작이 가능합니다.
또한, 컴포넌트 순서(Composite Order)에 따라 연산 순서가 결정되므로 인스펙터에서 원하는 콜라이더 형태를 세밀하게 조정할 수 있습니다.

Box콜라이더2, Circle콜라이더1을 병합한 콜라이더
Polygon콜라이더를 사용해도 남는 빈공간을 없앨수도있다.


2. Hinge Joint 2D

Hinge Joint 2D에서 Use Connected Anchor 옵션을 비활성화하여 연결된 객체의 앵커를 손쉽게 해제할 수 있습니다.
이 기능은 체인 같은 객체가 끊어지거나 부서지는 기믹을 구현할 때 매우 유용하게 활용됩니다.
즉, 복잡한 연결 설정 없이도 필요한 순간에 손쉽게 연결을 해제하여, 현실감 있는 파괴 효과를 줄 수 있습니다.

흔들리는 도중에 Use Connected Anchor 비활성화

 


3. Rigidbody2D의 변경된 API

Unity 6에서는 Rigidbody2D 관련 API가 개선되었습니다. 주요 변경 사항은 다음과 같습니다:

  • Velocity → LinearVelocity:
    기존 velocity 프로퍼티는 linearVelocity로 변경되어, 선형 속도와 각속도(AngularVelocity)를 명확하게 구분할 수 있게 되었습니다.
    이제 x축 속도만을 제어할 때도 단순히 body.linearVelocityX = dir * speed;와 같이 작성할 수 있어 코드 가독성이 크게 향상되었고 불필요한 Vector2 구조체를 선언할 필요가 없어 최적화 측면에서도 좋아졌습니다.
// Rigidbody2D에 Velocity.X에 값을 넣는 방식
// 이전 방식
Vector2 vel = new Vector2(dir * speed, body.Velocity.y);
body.Velocity = vel;

// 새로운 방식
body.linearVelocityX = dir * speed;

 

  • 새로운 MovePositionAndRotation:
    Transform의 SetLocalPositionAndRotation처럼, Rigidbody2D에서도 MovePositionAndRotation(Vector2 position, float angle) 함수가 추가되어, 물리 기반 최적화에 도움을 줍니다.
// void Rigidbody2D.MovePositionAndRoataion(Vector2 position, float angle)
body.MovePositionAndRotation(Vector2.one, 0);

 

  • TotalForce와 TotalTorque:
    Rigidbody2D가 현재 받고 있는 전체 힘(totalForce)과 토크(totalTorque)에 바로 접근하거나 할당할 수 있다.
body.totalForce = 0;
Debug.Log(body.totalTorque);

4. Slide Movement API 추가

새롭게 추가된 Slide Movement API는 지형의 경사나 콜라이더2D 면을 미끄러지듯 자연스럽게 이동시키는 기능입니다.
이 API는 다음 두 가지 클래스를 제공합니다:

  • Rigidbody2D.SlideMovement: 슬라이드 이동을 제어하는 구조체
  • Rigidbody2D.SlideResults: 슬라이드 이동의 결과를 반환

이 기능은 특히 Kinematic Rigidbody에서 효과적이지만 Dynamic Rigidbody에서도 사용할 수 있습니다. 다만, Dynamic의 경우 중력이나 외부 충돌의 영향으로 예상치 못한 동작이 발생할 수 있으므로, 사용 목적에 맞게 Rigidbody 타입을 선택해야 합니다.


https://www.youtube.com/watch?v=Q7mHfbEzaJM

 

 

728x90