Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

콜리전 모양 (3D)

이 가이드에서는 설명합니다:

  • Godot에서 3D로 사용할 수 있는 충돌 모양 유형.

  • 볼록하거나 오목한 메시를 충돌 모양으로 사용합니다.

  • Godot에서 C#의 퍼포먼스

Godot는 성능과 정확도가 서로 다른 여러 종류의 충돌 형태를 제공합니다.

모양을 지정하는 가장 일반적인 방법은 오브젝트의 자식으로 CollisionShape2D또는 CollisionPolygon2D를 추가하는 것입니다. 이러한 노드들은 편집기 작업 공간에서 직접 모양을 그릴 수 있도록 합니다.

참고

단일 PhysicsBody에 여러 충돌 모양을 추가하면 겹치는 것에 대해 걱정할 필요가 없습니다. 그들은 서로 "충돌"하지 않습니다.

프리미티브 콜리전 모양

Godot는 다음 프리미티브 콜리전 모양 유형을 지원합니다:

하나 이상의 기본 모양을 사용하여 가장 작은 개체의 충돌을 나타낼 수 있습니다. 그러나 대형 선박이나 전체 레벨과 같은 보다 복잡한 개체의 경우 대신 볼록하거나 오목한 모양이 필요할 수 있습니다. 자세한 내용은 아래를 참조하세요.

RigidBodies 및 CharacterBodies와 같은 동적 객체의 경우 해당 동작이 가장 안정적이므로 기본 모양을 선호하는 것이 좋습니다. 그들은 종종 더 나은 성능도 제공합니다.

컨벡스 콜리전 모양

:ref:`볼록 충돌 모양 <class_ConvexPolygonShape3D>`은 기본 충돌 모양과 오목 충돌 모양 간의 절충안입니다. 복잡한 모양을 나타낼 수 있지만 중요한 주의 사항이 있습니다. 이름에서 알 수 있듯이 개별 모양은 볼록한 모양만 나타낼 수 있습니다. 예를 들어, 피라미드는 *볼록*이지만 속이 빈 상자는 *오목*입니다. 단일 충돌 모양으로 오목한 개체를 정의하려면 오목한 충돌 모양을 사용해야 합니다.

개체의 복잡성에 따라 오목한 충돌 모양 대신 여러 개의 볼록한 모양을 사용하면 더 나은 성능을 얻을 수 있습니다. Godot를 사용하면 *볼록 분해*를 사용하여 속이 빈 물체와 대략 일치하는 볼록 모양을 생성할 수 있습니다. 이 성능 이점은 특정 양의 볼록한 모양 이후에는 더 이상 적용되지 않습니다. 전체 레벨과 같이 크고 복잡한 개체의 경우 대신 오목한 모양을 사용하는 것이 좋습니다.

MeshInstance3D를 선택하고 3D 뷰포트 상단에 있는 Mesh 메뉴를 사용하여 편집기에서 하나 또는 여러 개의 볼록 충돌 모양을 생성할 수 있습니다. 편집기는 두 가지 생성 모드를 노출합니다.

  • **만들기 단일 볼록 충돌 형제**는 Quickhull 알고리즘을 사용합니다. 자동으로 생성된 볼록한 충돌 모양을 사용하여 하나의 CollisionShape 노드를 생성합니다. 단일 모양만 생성하므로 성능이 좋고 작은 물체에 이상적입니다.

  • **만들기 다중 볼록 충돌 형제**는 V-HACD 알고리즘을 사용합니다. 각각 볼록한 모양을 가진 여러 CollisionShape 노드를 생성합니다. 여러 모양을 생성하므로 성능이 저하되는 대신 오목한 개체에 대해 더 정확합니다. 중간 정도의 복잡도를 가진 객체의 경우 단일 오목 충돌 모양을 사용하는 것보다 속도가 더 빠를 가능성이 높습니다.

오목 또는 삼각메시 콜리전 모양

:ref:`오목 충돌 모양 <class_ConcavePolygonShape3D>`(삼각형 충돌 모양이라고도 함)은 몇 개의 삼각형에서 수천 개의 삼각형에 이르기까지 모든 형태를 취할 수 있습니다. 오목한 모양은 가장 느린 옵션이지만 Godot에서는 가장 정확합니다. StaticBodies 내에서는 오목한 모양만 사용할 수 있습니다. RigidBody의 모드가 Static이 아닌 한 CharacterBodies 또는 RigidBodies에서는 작동하지 않습니다.

참고

오목 모양이 가장 정확한 *충돌*을 제공하더라도 접촉 보고는 기본 모양보다 정확도가 떨어질 수 있습니다.

레벨 디자인에 GridMap을 사용하지 않는 경우 오목한 모양이 레벨 충돌에 대한 최선의 접근 방식입니다. 즉, 레벨에 작은 세부 사항이 있는 경우 성능과 게임 느낌을 위해 충돌에서 해당 세부 사항을 제외할 수 있습니다. 그렇게 하기 위해, 3D 모델러에서 단순화된 충돌 메시를 구축하고 Godot가 자동으로 충돌 모양을 생성하도록 할 수 있습니다. 자세한 내용은 아래에서 확인하세요

기본 및 볼록 모양과 달리 오목 충돌 모양에는 실제 "볼륨"이 없습니다. 도형의 *외부*와 *내부*에 개체를 배치할 수 있습니다.

MeshInstance3D를 선택하고 3D 뷰포트 상단에 있는 Mesh 메뉴를 사용하여 편집기에서 오목한 충돌 모양을 생성할 수 있습니다. 편집기에는 두 가지 옵션이 표시됩니다.

  • **만들기 Trimesh Static Body**는 편리한 옵션입니다. 메시의 형상과 일치하는 오목한 모양을 포함하는 StaticBody를 생성합니다.

  • **만들기 Trimesh Collision Sibling**은 메시의 형상과 일치하는 오목한 모양으로 CollisionShape 노드를 생성합니다.

더 보기

Godot용 모델을 내보내고 가져올 때 자동으로 충돌 모양을 생성하는 방법에 대한 정보는 :ref:`doc_importing_3d_scenes`를 참조하세요.

성능

PhysicsBody당 단일 충돌 형태로 제한되지 않습니다. 그럼에도 불구하고 특히 RigidBodies 및 CharacterBodies와 같은 동적 개체의 경우 성능을 향상하려면 모양 수를 가능한 한 낮게 유지하는 것이 좋습니다. 또한 물리 엔진의 내부 최적화를 활용하려면 CollisionShapes를 변환, 회전 또는 크기 조정하지 마십시오.

StaticBody에서 변환되지 않은 단일 충돌 형태를 사용할 때 엔진의 광역 위상 알고리즘은 비활성 PhysicsBodies를 삭제할 수 있습니다. 그러면 *좁은 단계*에서는 활성체의 모양만 고려하면 됩니다. StaticBody에 충돌 모양이 많으면 넓은 단계가 실패합니다. 그런 다음 속도가 느린 좁은 단계에서는 각 모양에 대해 충돌 검사를 수행해야 합니다.

성능 문제가 발생하면 정확성 측면에서 절충해야 할 수도 있습니다. 대부분의 게임에는 100% a정확한 충돌이 없습니다. 그들은 그것을 숨기거나 일반적인 게임 플레이 중에 눈에 띄지 않게 만드는 창의적인 방법을 찾습니다.