Unity가 6로 넘어오면서 바뀐 2D물리관련이 있다고 합니다. 다음 네 가지 주요 변경사항에 대해 살펴봅니다.
- Composite Collider 2D
- Hinge Joint 2D
- Rigidbody2D의 변경된 API
- Slide Movement API
1. Composite Collider 2D
기존에는 박스나 타일맵 콜라이더만을 병합할 수 있었지만, Unity 6에서는 모든 유형의 콜라이더를 병합할 수 있습니다.
특히, 단순히 영역을 합치는 것을 넘어 병합(Merge), 교차(Intersect), 차이( Difference), 뒤집기(Flip) 중 하나를 선택할 수 있어 더욱 다양한 형태의 콜라이더 제작이 가능합니다.
또한, 컴포넌트 순서(Composite Order)에 따라 연산 순서가 결정되므로 인스펙터에서 원하는 콜라이더 형태를 세밀하게 조정할 수 있습니다.
2. Hinge Joint 2D
Hinge Joint 2D에서 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
'Unity > 정보' 카테고리의 다른 글
[Unity] Image와 RawImage 비교 (0) | 2025.01.16 |
---|---|
[Unity] 사운드 매니저 구현 (Sound Manager) (0) | 2025.01.13 |
[Unity] 2D 무한 배경 구현하기 (0) | 2025.01.12 |
[Unity] unity6의 웹 배포 빌드 방식 (1) | 2025.01.05 |
[Unity] Unity6 픽셀 아트 2D 라이팅 튜토리얼 (2) (0) | 2025.01.05 |