다음을 통해 공유


메시 물리학 프로그래머 가이드

일반 팁

Unity 물리학 문서 검색으로 시작할 수 있습니다. Unity에서 물리학을 최적화하는 방법에 사용할 수 있는 많은 리소스가 있습니다.

메시 물리학은 몇 가지 추가 과제와 함께 제공됩니다. 다음은 이를 극복하는 데 도움이 되는 몇 가지 팁입니다.

  • 두꺼운 벽 만들기: 네트워크 동기화로 딱딱한 본문이 약간 이동할 수 있습니다. 결과적으로 개체 간에 몇 가지 추가 침투가 표시됩니다. 작은 동적 몸은 얇은 벽을 통해 밀어 얻을 수 있습니다. 두꺼운 개체와 벽의 경우 이러한 터널링 효과 가능성이 적습니다. 가능하면 동적 본문에 대해 공진 선체 또는 작은 공록 선체 집합을 사용합니다.

  • 가능하면 정적 기하 도형에 두꺼운 공록 조각을 사용합니다. 메시, 특히 고밀도 메시를 피하십시오.

  • kg의 실제 질량: 다양한 소스의 콘텐츠가 동일한 장면에서 상호 작용할 수 있습니다. 이는 개체 간의 질량 비율이 적절한 경우 잘 작동합니다. 좋은 출발점은 kg를 사용하여 몸에 현실적인 질량을 할당하는 것입니다.

향상된 메시 물리학 콘텐츠 개발

자동 재생 애니메이션

물리학 본문과 상호 작용하는 장면에 자동 재생 애니메이션을 추가할 수 있습니다. 이러한 애니메이션은 모든 클라이언트가 동시에 동일한 애니메이션 상태에 있게 될 때까지 각 클라이언트에서 재생 속도를 일시적으로 조정(속도 저하 또는 속도 향상)하여 클라이언트 간에 자동으로 동기화됩니다.

설정

  • 자동으로 재생이 활성화됩니다.
  • 애니메이션이 물리학 본문과 상호 작용하는 충돌체에 영향을 주는 경우 권장되는(필수는 아님) 물리학 에 애니메이션 효과를 줍니다.
  • 애니메이션이 화면 을 벗어난 경우에도 물리학 본문에 영향을 줄 수 있으므로 컬링 형식 은 "항상 애니메이션"(메시 물리학에 의해 자동으로 적용됨)으로 설정됩니다.

Inspector의 애니메이션 구성 요소 설정 스크린샷.

자동 재생 애니메이션에서 사용하는 애니메이션 클립은 모든 래핑 모드를 사용할 수 있습니다. 유용한 선택은 "루프" 및 "탁구"입니다.

Inspector의 애니메이션 클립 자산 설정 스크린샷.

구성 요소

개체에 다음 MonoBehaviour 구성 요소 중 하나를 추가하면 이 개체에 특정 동작이 추가됩니다.

끈적끈적한 몸체

몸이 다른 몸에 달라붙게 합니다. 그것은 다른 시체에 다트를 던지거나 벽에 그림을 첨부하는 데 사용할 수 있습니다. 이는 관련된 두 본문 간에 고정 제약 조건을 만들어 구현됩니다. 참고: 이 작업은 모든 클라이언트에서 수행되므로 특수 네트워크 메시지로 구현됩니다.

검사기에서 고정 본문 스크립트 옵션의 스크린샷

설정

  • 스틱: 본문이 동적 또는/및 정적 본문에 달라붙는지 여부를 정의합니다.
  • 언제: 때로는 다른 몸에 닿을 때 빠른 몸을 붙이고 싶을 때, 벽에 단추를 붙이면 접착제가 굳어질 때까지 기다리는 것과 같이 특정 시간 동안 다른 몸에 붙일 때 몸을 붙이고 싶을 때가 있습니다.
  • 충돌 제어 한 본문과 다른 본문 간의 특정 충돌을 사용하지 않도록 설정하려면 일반적으로 충돌 계층을 사용할 수 있습니다. 그러나 Microsoft Mesh에는 하드 코딩된 충돌 계층이 32개뿐이므로 옵션이 아닐 수 있습니다. 여기에서 특정 본문을 사용하지 않도록 설정할 수 있습니다.
  • 충돌 제어에 적용된 충돌 본문 필터의 영향을 받는 본문입니다.

포함 필드

강체가 하나 또는 여러 개의 트리거 충돌체의 경계 내에 유지되도록 합니다.

검사기의 포함 필드 스크립트 옵션 스크린샷.

이 구성 요소가 작동하려면 하나 이상의 트리거 충돌체에 연결해야 합니다. (이러한 트리거 충돌기는 이 구성 요소가 연결된 아래 GameObject 의 변환 계층 구조에 중첩될 수도 있습니다.)

이 구성 요소의 영향을 받는 강성 본문은 장면이 시작될 때 이미 트리거 충돌체("트리거 볼륨")의 경계 내에 있어야 합니다. 이러한 각 경직된 본문의 질량 중심은 트리거 볼륨의 경계 내에 유지되도록 제한됩니다. 이렇게 하면 이러한 딱딱한 본문의 중심을 외부로 끌어오거나 이동할 수 없습니다.

설정:

  • 포함 에서 최대 편차를 사용하면 영향을 받는 강체의 질량 중심이 다시 스냅되기 전에 트리거 볼륨 외부로 약간 벗어날 수 있습니다. 이는 성능 최적화 절차입니다. 허용되는 최대 편차가 크면 본문이 트리거 볼륨을 눈에 띄게 벗어나 다시 스냅할 수 있지만, 코드는 트리거 볼륨 내에서 쉬거나 느리게 이동할 때 신체의 위치를 자주 확인하고 확인할 필요가 없습니다.

  • 영향을 받는 본문이 구성 요소의 영향을 받는 본문에 대한 선택적 필터링 조건을 정의합니다. 기본적으로 모든 본문이 영향을 받습니다.

속도 벡터 필드

특정 대상 속도에 도달할 때까지 강체를 가속/감속할 수 있습니다.

검사기에서 방향 속도 필드 스크립트 옵션의 스크린샷

이 구성 요소는 속도의 크기와 방향을 모두 제어합니다. 진도 및 속도 방향 필드만 제어하여 방향만 제어하려면 속도 크기 필드를 참조하세요. 두 가지 작업 모드가 있습니다.

  • 강체에 부착된 경우 이 강체가 제어됩니다.
  • 트리거 충돌체에 연결된 경우 이 트리거 볼륨을 입력하는 모든 강체가 영향을 받습니다.

설정:

  • 속도 유형 은 선형 또는 각 속도에서 작업하는지 여부를 정의합니다.
  • 로컬 공간 의 방향은 대상 속도가 구성 요소가 연결된 개체의 로컬 공간에 지정되는지 여부를 정의합니다.
  • 대상 속도 는 원하는 속도 벡터를 미터/초(또는 각 속도의 경우 라디안/초)로 설정합니다.
  • 최대 가속 은 대상 속도에 도달하기 위해 적용되는 최대 가속을 정의합니다.
  • 가속 유형 은 대상 속도에 도달하는 가속 유형을 정의합니다.
    • 즉시 대상 속도에 도달합니다(최대 가속 = 무한대를 사용하는 상수 가속동일).
    • 상수 가속은 최대 가속 설정의 제한 내에 상관없이 본문이 대상 속도에 도달하도록 합니다.
    • 부드러운 접근 방식은 대상 속도에 가까워질수록 가속을 줄입니다. 즉, 실제로는 대상 속도에 도달하지 않습니다. 또한 오르막 또는 내리막길을 가는 것과 같은 외부 영향이 있을 경우, 이 여분의 영향은 완전히 재정의되지 않아 오르막보다 더 빠른 내리막길로 이동하게 됩니다.
  • 영향을 받는 본문이 구성 요소의 영향을 받는 본문에 대한 선택적 필터링 조건을 정의합니다. 기본적으로 모든 본문이 영향을 받습니다.

배율 조정된 중력 필드

중력이 하나 또는 여러 개의 트리거 충돌기의 경계 내에서 경직된 본문에 미치는 영향을 변경합니다.

검사기의 반중립성 필드 스크립트 옵션 스크린샷.

이 구성 요소가 작동하려면 하나 이상의 트리거 충돌체에 연결해야 합니다. (이러한 트리거 충돌기는 이 구성 요소가 연결된 GameObject 아래의 변환 계층 구조에 중첩될 수도 있습니다.)

트리거 충돌체("트리거 볼륨")를 터치하거나 겹치는 모든 강체는 글로벌 물리학 중력이 아닌 이 구성 요소의 중력 설정에 따라 작동합니다. 중력 사용을 사용하지 않도록 설정된 강체는 무시됩니다.

세계에서 플레이어의 자신의 크기에 대한 인식과 중력 사이에는 흥미로운 관계가 있습니다.

  • 중력이 우리가 익숙한 것보다 작 으면(개체가 떨어질 때 속도가 느려지면) 플레이어는 거인처럼 더 커지게 됩니다.
  • 중력이 우리가 익숙한 것보다 크 면(개체가 떨어질 때 더 빠름) 플레이어는 마우스처럼 더 작다고 인식합니다.

설정:

  • 중력 사전 설정은 중력 배율 속성에 대한 몇 가지 흥미롭고 유용한 사전 설정을 선택할 수 있습니다 : 다양한 천체 (달, 화성, 지구, 목성), 아니 중력 (우주 공간) 또는 반전 중력 (거꾸로). 언제든지 원하는 값으로 중력 배율을 덮어쓸 수 있습니다.
  • 중력 배율 은 장면에 영향을 주는 기본 물리학 중력과 관련하여 트리거 볼륨 내의 로컬 중력을 설정합니다. 기본 중력 배율 1은 중력에 영향을 받지 않습니다. 값이 클수록 중력이 증가합니다. 0은 중력을 제거합니다. 음수 값은 중력의 방향을 전환합니다.
  • 영향을 받는 본문이 구성 요소의 영향을 받는 본문에 대한 선택적 필터링 조건을 정의합니다. 기본적으로 모든 본문이 영향을 받습니다.

궤도 중력장

장면에서 "토이 행성"의 중력을 시뮬레이션합니다.

검사기의 중력 필드 스크립트 옵션 스크린샷.

이 구성 요소가 작동하려면 하나 이상의 트리거 충돌체에 연결해야 합니다. (이러한 트리거 충돌기는 이 구성 요소가 연결된 GameObject 아래의 변환 계층 구조에 중첩될 수도 있습니다.)

트리거 충돌체("트리거 볼륨")를 터치하거나 겹치는 모든 단단한 본문은 이 구성 요소가 연결된 개체의 위치로 끌어옵니다.

설정:

  • 중력 은 중력의 크기를 정의합니다. 이것은 1 미터 거리에서 중앙 본문을 향해 궤도 본문 ("달")의 가속입니다. 궤도 속도는 sqrt(중력/반경)이므로 이 값은 1미터 반경의 안정적인 궤도에서 달의 속도에 대해 설명합니다.

  • Global Gravity 를 사용하지 않도록 설정하면 이 구성 요소의 영향을 받는 본문에 대해 장면의 전역 물리학 중력 설정을 사용하지 않도록 설정합니다. 기본적으로 글로벌 장면 중력은 여전히 행성과 달에 영향을 미칩니다.

  • 영향을 받는 본문이 중력장에서 달이 될 수 있는 본문에 대한 선택적 필터링 조건을 정의합니다.

  • 원 궤도에 포스 달은 원형 궤도에 달을 밀어 몇 가지 부드러운 힘을 적용 속임수입니다. 동기는 비 전문가가 원형 궤도를 달성하기 위해 몸의 중력과 초기 속도를 설정하는 것이 어렵다는 것입니다. 또한 이 옵션을 사용하도록 설정하면 Unity 편집기에서 중력 필드 내부에 배치된 모든 달은 장면이 로드될 때 자동으로 중앙 본문 궤도를 도는 것을 시작합니다.

  • 강제 궤도 의 강도는 달을 원형 궤도에 강제로 적용된 가속도를 조정합니다.

  • 배치된 위치 강제 반경을 설정하면 Unity 편집기에서 중력 필드 내부에 배치된 달이 중앙 본문으로부터의 초기 거리를 기본 궤도로 자동으로 채택합니다.

  • Set Forced Radius Where Dropped 를 사용하면 대화형으로 잡고 중력장으로 이동하는 달이 선호하는 궤도로 떨어졌던 중앙 본문과의 거리를 자동으로 채택합니다.

  • 기본 힘 반지름 은 다른 옵션으로 재정의되지 않는 한 위의 치트에서 사용되는 기본 반경을 정의합니다.

부력 필드

물에 임의의 강체의 부력을 시뮬레이션 : 몸은 연결된 트리거 볼륨에 떠 있는 것처럼 보입니다.

검사기의 부력 필드 스크립트 옵션 스크린샷.

이 구성 요소가 작동하려면 하나 또는 여러 개의 트리거 충돌체에 연결해야 합니다. (이러한 트리거 충돌기는 이 구성 요소가 연결된 GameObject 아래의 변환 계층 구조에 중첩될 수도 있습니다.)

트리거 충돌체("트리거 볼륨")를 터치하거나 겹치는 모든 강체는 부력(upthrust)을 경험하여 해상 상태를 유지합니다.

이 구성 요소는 강체의 충돌체 모양을 사용하여 밀도(즉, 볼륨을 질량으로 나눈 볼륨), 부력, 끌기 및 마찰을 계산합니다.

부력 충돌기

이점: 성능. 부력 계산의 컴퓨팅 비용은 충돌체 꼭짓점 수와 함께 선형으로 확장됩니다. 신체에 대한 일반적인 물리학 충돌기는 이미 간소화된 경우에도 부력이 충분히 잘 작동하기 위해 필요한 것보다 훨씬 더 복잡합니다(꼭짓점 수 측면에서).

사용 방법: 본문에 하나(또는 여러 개의) 추가 충돌체(비활성화할 수 있습니다)를 추가합니다. 명명된 BuoyancyHull 물리학 자료(정확한 맞춤법 문제!)를 할당하여 충돌체를 명시적 부력 선체로 표시합니다. 이 물리학 재료의 구성 세부 사항은 중요하지 않습니다 - 적합한 물리학 재료는 메시 도구 키트 패키지와 함께 제공됩니다. 본문에 이와 같이 표시된 충돌체가 있는 경우 이러한 충돌체만 부력 계산에 사용됩니다. 다른 모든 충돌기는 무시됩니다.

모범 사례: 부력 필드에 던져질 수 있는 모든 강체에 명시적 부력 선체 충돌체. 가장 적은 꼭짓점(충돌체당 8개)을 가지고 있기 때문에 큐브 충돌체를 사용하는 것이 가장 쉽고 가장 쉽습니다. 부력 본문의 정확한 시각적 모양을 일치시키는 것은 일반적으로 좋은 결과를 위해 필요하지 않습니다. 매우 거친 근사값은 일반적으로 충분합니다.

설정:

  • 밀도 는 트리거 볼륨을 입방 미터당 킬로그램 단위로 "채우는" 시뮬레이션된 액체의 밀도입니다. (기본값은 실온에서 근사값의 물 밀도를 나타냅니다.)
  • 표면 유형 은 구성 요소가 수면의 모양을 샘플링하여 부력을 계산하는 방법을 지정합니다.
    • Static Flat 은 수면이 완벽하게 평면이며 장면의 초기 위치에서 이동하지 않는 것으로 가정합니다. 수면의 위치와 방향은 장면이 시작될 때 한 번만 결정됩니다. 계산적으로 가장 저렴한 옵션입니다.
    • Dynamic Flat 은 수면이 완벽하게 평면이지만 이동할 수 있다고 가정합니다(예: 수위가 상승하거나 가라앉을 수 있습니다). 수면의 위치와 방향은 프레임당 한 번씩 결정됩니다.
    • Dynamic Flat Per Body 는 평면이 아닌 수면을 지원합니다(예: 물결선일 수 있습니다). 수면에 떠있는 각 강체의 경우, 강체 아래의 수면에 대한 로컬 평면 근사값은 프레임당 한 번 결정되며, 이 강체에 대한 부력 계산에 사용됩니다.
  • 영향을 받는 본문이 부력 필드에 부동할 수 있는 본문에 대한 선택적 필터링 조건을 정의합니다. (기본적으로 모든 본문은 적격합니다.)
  • 딱딱한 몸체가 물에 부딪치면 운동 저항을 제어합니다(즉, 신체 표면에 마찰 직교).
  • 피부 마찰 은 강체가 물 을 통해 이동될 때 운동 저항을 제어합니다 (즉, 신체 표면과 평행한 마찰).

중요! 구성 요소가 강체의 충돌체 메시 삼각형에 액세스할 수 있도록 하려면 충돌체 메시 의 가져오기 설정에서 "읽기/쓰기 사용" 확인란을 선택해야 합니다. 그렇지 않으면 본문이 부력 필드에 의해 무시되고 영향을 받지 않고 필드를 통과합니다.

중요! 물리학 본문에 그럴듯한 질량이 있는지 확인하여 부력 필드에서 예상대로 동작하는지 확인합니다.

  • 강체의 질량이 볼륨에 비해 믿을 수 없을 정도로 높은 경우, 그것은 바닥에 싱크됩니다.
  • 강체의 질량이 볼륨에 비해 믿을 수 없을 정도로 낮은 경우(예: Unity의 Rigidbody 기본 질량 단위 1개) 시뮬레이션된 액체 위에 배치됩니다.

기본적으로 부력 필드는 트리거 볼륨의 표면을 샘플링하여 수면의 모양을 결정합니다(선택한 수면 유형 설정에 따라). CPU 메모리에서 애니메이션된 표면은 이러한 방식으로 샘플링할 수 있지만 GPU 꼭짓점 셰이더에 의해 애니메이션된 표면은 런타임에 스크립트에 표시되지 않습니다. 이 BuoyancyField 구성 요소는 외부 스크립트가 GPU 애니메이션 물 표면 모양에 대한 정보를 제공할 수 있도록 하는 스크립트 GetDistanceFromSurface 액세스 가능 콜백 대리자를 제공합니다.

BuoyancyFieldWaves 코드 없는 접근 방식을 사용하여 물결 모양의 수면을 가져오는 방법은 아래 구성 요소를 참조하세요.

부력 필드 웨이브

특정 꼭짓점 셰이더 BuoyancyFieldWaves_VertexPosition 와 함께 작동하는 구성 요소에 추가 BuoyancyField 기능(하위 셰이더 그래프 및 HLSL 포함 파일로 모두 사용 가능). 이렇게 하면 물결 모양의 수면의 시각적 효과를 수면에 떠 있는 개체의 해당 동작과 함께 만듭니다.

검사기에서 부력 필드 웨이브 스크립트 옵션의 스크린샷.

이 구성 요소는 이미 추가된 구성 요소가 있는 GameObject에 BuoyancyField 추가해야 합니다.

애니메이션 효과를 줄 수 있는 수면은 아래쪽 위에서 볼 때 경계가 원하는 수면 모양인 평평한 테셀 처리된 메시로 제공되어야 합니다. 물 표면에 사용되는 재료는 메시의 꼭짓점 위치를 결정하기 위해 하위 셰이더를 통합 BuoyancyFieldWaves_VertexPosition 하는 셰이더를 사용해야 합니다. 포함된 샘플 BasicWavyWaterSurface 재질(및 이름이 같은 셰이더 그래프)을 고유한 셰이더 개발의 시작점으로 사용할 수 있습니다.

설정:

  • 웨이브 메시 렌더러는 수면 메시를 렌더링하는 구성 요소를 참조 MeshRenderer 합니다.
    • 재질 은 렌더러에서 사용되는 재질을 보여줍니다. 이는 정보만 제공하기 위한 것입니다.
    • 셰이더는 재질에서 사용되는 셰이더를 보여줍니다. 이는 정보만 제공하기 위한 것입니다.
  • 웨이브 셰이더 속성 이름은 셰이더에서 노출해야 하는 필수 셰이더 속성의 이름을 정의합니다. 이러한 속성은 런타임에 이 구성 요소에 액세스하여 부력 필드의 동작이 모든 클라이언트의 수면 시각적 개체와 동기화되도록 합니다.
    • 스크립트 제어 시간은 모든 클라이언트에서 동기화되는 float지속적으로 증가하는 시간(초 단위)으로 이 구성 요소마다 지속적으로 업데이트되는 노출된 형식 셰이더 속성의 이름입니다. BuoyancyFieldWaves_VertexPosition 하위 셰이더는 이 공유 시간을 사용하여 모든 클라이언트에서 동기화된 상태로 유지되고 부력 필드의 동작과 동기화되는 웨이브 패턴을 만듭니다.
    • 웨이브 속도는 웨이브가 가로로 전파되는 기본 속도를 결정하는 노출된 float형식 셰이더 속성의 이름입니다. 속성 값 자체는 웨이브 표면 메시에 적용된 재질에서 설정해야 합니다. 이를 0으로 설정하면 웨이브 표면이 정적이고 움직이지 않게 됩니다.
    • 웨이브 길이는 웨이브 패턴의 거친 부분을 결정하는 노출된 float형식 셰이더 속성의 이름입니다. 속성 값 자체는 웨이브 표면 메시에 적용된 재질에서 설정해야 합니다. 값이 작을수록 잔물결이 짧아지고, 값이 클수록 긴 스윕 웨이브가 생성됩니다.
    • 웨이브 높이는 웨이브의 기본 높이를 결정하는 노출된 float형식 셰이더 속성의 이름입니다. 속성 값 자체는 웨이브 표면 메시에 적용된 재질에서 설정해야 합니다. 이를 0으로 설정하면 웨이브 표면이 완전히 평평해집니다.

포함된 샘플 BasicWavyWaterSurface 셰이더 그래프(동일한 이름의 재질에서 사용됨)는 필요한 BuoyancyFieldWaves_VertexPosition 꼭짓점 하위 셰이더를 사용하여 물결선 3D 표면을 생성하지만 조각 셰이더에 대한 최소 스탠드인 구현만 포함하므로 표면을 섀딩되지 않은 일반 색의 반투명 메시로 렌더링합니다.

셰이더 그래프 편집기에서 기본 물결선 수면 셰이더 그래프의 스크린샷.

구성 요소와 함께 BuoyancyFieldWaves 사용되는 셰이더의 조각 경로를 원하는 대로 완전히 사용자 지정할 수 있습니다. 그러나 셰이더의 꼭짓점 경로는 하위 셰이더 그래프를 사용하고 BuoyancyFieldWaves_VertexPosition 구성 요소가 런타임에 액세스할 수 있도록 전체 셰이더 그래프의 -type 셰이더 속성으로 float이 하위 셰이더 그래프에 네 개의 입력을 노출하는 것이 중요합니다. 셰이더가 필요한 하위 셰이더 그래프를 포함하지 못하거나 필요한 셰이더 속성이 노출되지 않으면 구성 요소의 검사기에서 디자인 타임에 오류 메시지가 표시되고 런타임에 부력이 작동하지 않습니다.

오류 메시지를 보여 주는 부력 필드 웨이브 스크립트 옵션의 스크린샷: 필수 꼭짓점 하위 셰이더를 사용하지 않습니다.

오류 메시지를 보여 주는 부력 필드 웨이브 스크립트 옵션의 스크린샷: 셰이더 속성이 재질에 의해 노출되지 않습니다.

샘플 BasicWavyWaterSurface 셰이더 그래프는 콘텐츠 개발 중에 스탠드인으로 사용할 수 있으며 사용자 고유의 셰이더 개발을 위한 시작 지점으로 사용될 수 있습니다. 또는 기존 물 표면 셰이더를 사용하고 조각 경로를 유지 하며 꼭짓점 경로만 바꿀 수 있습니다.

최대 Angular 속도

물리학 본문의 기본 최대 각도 속도를 재정의합니다.

검사기에서 최대 Angular 속도 스크립트 옵션 스크린샷

물리학 엔진은 강체가 이 각도 속도를 초과할 수 없습니다. 이는 지정된 강체의 롤링 속도를 제한하거나 물리학 기본값인 초당 50 라디안(초당 약 8회 회전)보다 빠르게 롤할 수 있도록 하는 데 유용할 수 있습니다.

최대 각도 속도는 초당 라디안으로 입력해야 합니다. 입력한 값은 초당 도(180도 ≈ 3.14 라디안) 및 초당 회전(1 레볼루션 = 360도 ≈ 6.28 라디안)으로 표시됩니다.

속도 크기 필드

허용되는 범위 내에 있는 속도에 도달할 때까지 강체의 가속/감속을 허용합니다.

검사기의 속도 필드 스크립트 옵션 스크린샷.

이 구성 요소는 속도의 크기를 제어하고 현재 방향을 유지합니다. 개체가 여전히 있는 경우 한 프레임 동안 임의의 방향을 선택합니다. 두 가지 작업 모드가 있습니다.

  • 강체에 부착된 경우 이 강체가 제어됩니다.
  • 트리거 충돌체에 연결된 경우 이 트리거 볼륨을 입력하는 모든 강체가 영향을 받습니다.

설정:

  • 속도 유형 은 선형 또는 각 속도에서 작업하는지 여부를 정의합니다.
  • 속도 제한은 원하는 최소 속도 및 최대 속도(미터/초 또는 각도 속도의 경우 라디안/초)를 설정합니다. 현재 속도가 최소 이하이면 본문이 감속할 최대값보다 많으면 가속됩니다. 현재 속도가 이미 한도 내에 있는 경우 스크립트는 영향을 주지 않습니다. 특정 대상 속도를 설정하려면 최소 및 최대값을 동일한 값으로 설정합니다.
  • 최대 가속 은 대상 속도에 도달하기 위해 적용되는 최대 가속을 정의합니다.
  • 가속 유형 은 대상 속도에 도달하는 가속 유형을 정의합니다.
    • 즉시 속도 제한에 도달합니다(최대 가속 = 무한대를 사용하는 상수 가속동일).
    • 상수 가속은 최대 가속 설정의 제한 내에 상관없이 본문이 대상 속도에 도달하도록 합니다.
    • 부드러운 접근 방식은 대상 속도에 가까워질수록 가속을 줄입니다. 즉, 실제로는 대상 속도에 도달하지 않습니다. 또한 오르막 또는 내리막길을 가는 것과 같은 외부 영향이 있을 경우, 이 여분의 영향은 완전히 재정의되지 않아 오르막보다 더 빠른 내리막길로 이동하게 됩니다.
  • 영향을 받는 본문이 구성 요소의 영향을 받는 본문에 대한 선택적 필터링 조건을 정의합니다. 기본적으로 모든 본문이 영향을 받습니다.

필드 맞춤

본문을 지정된 축에 맞춥니다.

검사기에서 필드 맞춤 스크립트 옵션의 스크린샷.

이 구성 요소는 특정 방향에 맞게 본문에 토크를 추가합니다. 토크는 항상 대상을 향해 본문을 회전하는 방향으로 적용됩니다. 두 가지 작업 모드가 있습니다.

  • 강체에 부착된 경우 이 딱딱한 본문이 정렬됩니다.
  • 트리거 충돌체에 연결된 경우 이 트리거 볼륨에 들어가는 모든 고정된 본문이 정렬됩니다.

설정:

  • 강체 축 은 대상에 맞출 영향을 받는 강체의 축을 설정합니다.
  • 맞춤 모드 는 대상 맞춤을 지정하는 다양한 모드를 제공합니다.
    • 전역 공간에서 글로벌 공간에서 대상 맞춤을 지정합니다.
    • 로컬 공간에서 로컬 공간에서 대상 맞춤을 지정합니다(트리거 볼륨에만 적용됨).
    • 본문을 선형 속도에 맞추는 속도 방향입니다.
    • 본문을 대상 gameobject에 맞추는 게임 개체 쪽으로.
  • 대상 맞춤 은 맞춤의 대상 방향을 설정합니다. (경우에만 맞춤 모드는 전역 공간 또는 로컬 공간으로 설정됩니다.)
  • 대상 게임 개체 는 맞춤의 대상 방향을 설정합니다. (경우에만 맞춤 모드는 게임 개체쪽으로 설정됩니다.)
  • 토크 승수 는 대상 맞춤에 도달하기 위해 적용된 토크의 크기를 조정합니다. 더 높은 승수는 본문을 더 빠르게 회전합니다(1에서 1000 사이).
  • 감쇠 계수는 감쇠 계수를 설정합니다(0에서 5 사이). 1 이하로 설정하면 본문이 대상 방향을 중심으로 진동할 수 있습니다.

속도 방향 필드

속도가 대상 방향에 도달할 때까지 강체를 조종할 수 있습니다.

검사기의 속도 방향 필드 스크립트 옵션 스크린샷.

이 구성 요소는 속도의 방향만 제어하고 현재 속도를 유지합니다. 두 가지 작업 모드가 있습니다.

  • 강체에 부착된 경우 이 강체가 제어됩니다.
  • 트리거 충돌체에 연결된 경우 이 트리거 볼륨을 입력하는 모든 강체가 영향을 받습니다.

설정:

  • 속도 유형 은 선형 또는 각 속도에서 작업하는지 여부를 정의합니다.
  • 게임 개체 팔로우는 대상이 미리 정의된 방향인지 또는 특정 GameObject를 향한 방향인지를 정의합니다. 선형 속도에 대해서만 작동합니다.
  • 대상 본문(게임 개체 팔로우가 true로 설정된 경우): 원하는 팔로우 방향을 설정합니다.
  • 대상 방향 은 원하는 방향을 설정합니다. 이 값은 정규화되므로 크기는 영향을 주지 않습니다.
  • 로컬 공간 의 방향은 폭발의 로컬 변환에서 방향이 지정되는지 여부를 정의합니다.
  • 최대 가속 은 대상 속도에 도달하기 위해 적용되는 최대 가속을 정의합니다.
  • 가속 유형 은 대상 속도에 도달하는 가속 유형을 정의합니다.
    • 즉시 대상 방향에 도달합니다(최대 가속 = 무한대를 사용하는 상수 가속동일).
    • 상수 가속은 최대 가속 설정의 제한 내에 상관없이 본문이 대상 속도에 도달하도록 합니다.
    • 부드러운 접근 방식은 대상 속도에 가까워질수록 가속을 줄입니다. 즉, 실제로는 대상 속도에 도달하지 않습니다. 또한 오르막 또는 내리막길로 가는 것과 같은 외부 영향이 있는 경우 이 추가 영향이 완전히 재정의되지 않아 오르막길보다 더 빠른 내리막길이 됩니다.
  • 영향을 받는 본문이 구성 요소의 영향을 받는 본문에 대한 선택적 필터링 조건을 정의합니다. 기본적으로 모든 본문이 영향을 받습니다.

자기 본문

신체에 다른 몸을 끌어들이거나 격퇴하는 자기 속성을 제공합니다.

검사기에서 자기 본문 스크립트 옵션의 스크린샷.

이 구성 요소가 작동하려면 하나 또는 여러 개의 충돌체에 연결해야 합니다. (이러한 충돌기는 이 구성 요소가 연결된 아래 GameObject 의 변환 계층 구조에 중첩될 수도 있습니다.) 각 충돌체는 이 충돌체에 충분히 가까운 다른 강체에 힘을 발휘합니다.

설정:

  • 강도 는 접촉 지점에서 자석의 가속을 정의합니다(충돌자 사이의 거리가 0인 경우).
  • 영향 의 거리는 자기력의 범위를 제어합니다. 자기력은 충돌기 사이의 가장 짧은 거리가 더 작은 경우에만 적용됩니다.
  • 필드 유형 은 자기력이 거리와 함께 약화되는 방법을 정의합니다.
    • 상수 는 자기력이 거리와 동일하다고 가정합니다.
    • 선형은 자기력이 힘에서 0으로 선형으로 떨어진다고 가정합니다(영향의 거리에서).
    • 방향은 거리에 대한 반비례적 의존성을 가정합니다.
    • 역 제곱 은 제곱된 거리에 대한 반비례적 의존성을 가정합니다(실제 자석과 유사함).
  • 마그네틱 폴 은 이 개체에 끌리거나 이 개체에 의해 격퇴되는 개체를 제어합니다.
    • 북극은 남극끌어들이고 북극을 격퇴합니다.
    • 남극은 북극끌어들이고 남극을 격퇴합니다.
    • 자기는 남극북극을 모두 끈다.
  • 접촉 시 중력 사용 안 함: 이 기능을 사용하도록 설정하고 자석의 강도가 중력보다 2배 더 크면 이 자석과 접촉하는 신체에 대해 중력이 비활성화됩니다. 영향을 주려면 개체 중 하나가 정적이어야 합니다. 이것은 종종 벽 아래로 몸의 슬라이딩을 방지하기 위해 사용됩니다.

구형 폭발

특정 반경 내의 모든 본체가 바깥쪽으로 이동하는 폭발을 만듭니다.

검사기에서 구형 폭발 스크립트 옵션의 스크린샷

폭발력은 강체의 질량(및 폭발 중심과의 거리)에 따라 달라집니다.

설정:

  • 강도 는 폭발의 신체에 미치는 영향을 미터/초로 정의합니다. 실제 속도 변경은 폭발 유형위험 질량따라 더 적습니다(아래 참조).
  • 영향 의 거리는 폭발력의 범위를 제어합니다.
  • 필드 형식 은 거리와 함께 폭발 효과가 약화되는 방식을 정의합니다.
    • 상수 는 효과가 거리와 무관하다고 가정합니다.
    • 선형 드롭 에서는 효과가 최대 0에서 0으로 떨어진다고 가정합니다( 영향의 거리).
  • 위험 질량 은 폭발의 영향을 받지 않는 신체의 질량을 정의합니다. 무거운 몸은 가벼운 몸보다 효과가 적습니다. 예를 들어 위험 질량3분의 1에 달하는 강체는 속도 변화의 3분의 2를 느낄 수 있습니다.
  • 각도 임펄스 눈금 은 힘이 적용되는 위치를 정의합니다. 0으로 설정하면 질량 중앙에 힘이 적용되므로 회전이 없습니다. 1로 설정하면 폭발에 가장 가까운 지점에 힘이 적용됩니다.
  • 폐색 을 사용하도록 설정하면 다른 개체 뒤에 숨겨진 개체가 폭발을 느끼지 않습니다. 폭발의 중심과 질량 중심 사이의 단일 광선만 폐색을 검사합니다.

방향 폭발

트리거 내의 모든 본체가 특정 방향으로 이동하게 하는 폭발을 만듭니다.

검사기에서 방향성 Eplosion 스크립트 옵션의 스크린샷.

폭발력은 강체의 질량에 따라 달라집니다. 이 구성 요소가 작동하려면 트리거 충돌체에 연결해야 합니다. 트리거 충돌기 내의 모든 본문이 영향을 받습니다.

설정:

  • 강도 는 폭발의 신체에 미치는 영향을 미터/초로 정의합니다. 실제 속도 변경은 위험 질량따라 더 적습니다(아래 참조).
  • 방향 은 폭발의 방향을 정의합니다. 이 값은 정규화되므로 크기는 영향을 주지 않습니다.
  • 로컬 공간 의 방향은 폭발의 로컬 변환에서 방향이 지정되는지 여부를 정의합니다.
  • 위험 질량 은 폭발의 영향을 받지 않는 신체의 질량을 정의합니다. 무거운 몸은 가벼운 몸보다 효과가 적습니다. 예를 들어 위험 질량3분의 1에 달하는 강체는 속도 변화의 3분의 2를 느낄 수 있습니다.
  • 각도 임펄스 눈금 은 힘이 적용되는 위치를 정의합니다. 0으로 설정하면 질량 중앙에 힘이 적용되므로 회전이 없습니다. 1로 설정하면 폭발에 가장 가까운 지점에 힘이 적용됩니다.
  • 영향을 받는 본문 은 이 구성 요소의 영향을 받는 본문에 대한 선택적 필터링 조건을 정의합니다. 기본적으로 모든 본문이 영향을 받습니다.

공동 안정화

강체의 관성 텐서를 조정하여 제약 조건 시스템을 안정화합니다.

검사기에서 조인트 안정화 스크립트 옵션의 스크린샷

이 스크립트는 Rigidbody 또는 Joint 구성 요소가 연결된 모든 자식에서 작동합니다.

설정:

  • 안정화 요인 은 안정성을 위해 물리적 정확성을 얼마나 희생하는지 정의합니다. 예를 들어, 1 -> 주로 물리학이 정확하고, 4 -> 손상, 10 -> 아티팩트에서 안정적입니다.
  • 조인트 프로젝션 을 사용하면 모든 자식에 대한 제약 조건 프로젝션이 가능합니다. 이렇게 하면 안정성이 크게 향상될 수 있지만 물리적 정확성이 희생됩니다. 구성 가능 및 문자 조인트에서만 작동합니다.
  • 프로젝션 거리는 제약 조건의 최대 허용 위반을 정의합니다. 물리학 문제를 방지하려면 이 값을 가능한 한 높게 설정하세요.

바운싱 표면

충돌하는 모든 개체가 미리 정의된 속도로 반송되도록 하는 바운싱 표면을 만듭니다.

검사기에서 바운싱 Surface 스크립트 옵션의 스크린샷

설정:

  • 바운스 속도 크기 는 바운스 후 개체의 최소 및 최대 속도 크기를 정의합니다. 방향이 결정되는 방법은 바운스 효과를 참조하세요. 단일 대상 속도를 지정하려면 MinMax를 같은 값으로 설정합니다.
  • 바운스 효과는 바운싱 개체의 의도된 동작을 정의합니다.
    • 완벽한 바운스: 충돌 평면 표준에 들어오는 속도의 각도는 나가는 속도의 각도와 동일합니다.
    • 속도 크기 설정: 나가는 속도의 각도를 정상으로 설정하면 마찰의 영향을 받습니다.
    • 표준 속도 설정: 속도 크기 설정과 유사하지만 바운스 속도 크기는 평면에 수직 속도의 크기(보통 속도)를 정의합니다.
    • 대상 본문을 향해 바운스: 나가는 속도의 방향은 대상 본문을 향해 전달됩니다. 이 옵션을 선택하면 대상 본문 속성이 나타나고 설정해야 합니다.
  • 마찰 은 충돌 시 손실되는 탄젠트 속도를 제어합니다. 0으로 설정하면 바운싱 개체는 탄젠트 속도를 유지합니다. 1로 설정하면 개체가 표면과 수직 방향으로 바운스됩니다(탄젠트 속도는 0). 1보다 큰 값의 경우 개체가 뒤로 반송됩니다.

질량 중심 오프셋

강체의 질량 중심을 오프셋합니다.

검사기에서 대량 오프셋 중심 스크립트 옵션의 스크린샷.

설정:

  • 로컬 좌표의 오프셋은 로컬 좌표의 오프셋을 정의합니다.

로컬 물리학 범위

이 구성 요소 아래 의 계층 구조의 모든 강체는 클라이언트 간에 동기화되지 않습니다. 이 스크립트는 시각적 스크립트 또는 애니메이션을 통해 위치 또는 회전이 설정된 강체에 추가해야 합니다.

검사기에서 로컬 물리학 범위 설정의 스크린샷.

Mesh Visual Scripting 물리학 이벤트 노드에 대해 알아봅니다.

궤적 던지기

중력의 영향으로 자유 공간에서 강체의 미래 위치를 계산합니다.

검사기에서 궤적 스크립팅 옵션의 스크린샷

설정:

  • 강체 모드: true로 설정하면 강체 위치 및 속도가 초기 조건으로 사용됩니다. 실시간 미래 위치 계산을 사용하도록 설정합니다.
  • Rigidbody(Rigidbody 모드가 true설정된 경우에만 적용됨): 어떤 강체를 사용하는지 정의합니다.
  • 초기 속도: (Rigidbody 모드가 false로 설정된 경우에만 적용됨): 초기 속도를 정의합니다. 초기 위치는 이 구성 요소가 연결된 GameObject의 위치에서 가져옵니다.
  • 최대 점 수: 계산된 점의 최대 수를 정의합니다.
  • 시간 단계: 이후 위치 간의 시간 차이를 정의합니다.
  • 중력: 중력 가속입니다.
  • 선 렌더러: 포인트 위치가 복사되는 선 렌더러를 지정합니다. 그러면 throw 궤적이 표시됩니다.

본문 변환 다시 설정

시각적 스크립트에 의해 트리거되는 경우 이 구성 요소는 동일한 변환 또는 모든 자식 변환에서 모든 물리학 본문의 위치와 회전을 초기 값으로 다시 설정합니다.

검사기에서 본문 변환 다시 설정 구성 요소의 스크린샷.

설정:

  • 초기 자동 저장: 선택한 경우 초기화 변환으로 환경 시작 시 변환을 사용합니다. 선택하지 않은 경우 다시 설정을 수행하기 전에 시각적 스크립트를 사용하여 [본문 변환 저장] 함수를 호출하여 다시 설정 변환을 저장해야 합니다.

시각적 스크립트에 사용할 수 있는 함수

  • 지금 본문 변환 다시 설정: 본 문 변환 다시 설정 구성 요소의 범위에서 모든 물리학 본문의 위치와 회전을 가장 최근에 저장된 초기화 변환으로 다시 설정합니다. 한 클라이언트에서만 호출합니다.

[본문 변환 다시 설정] 단추가 강조 표시된 편집 모드에서 본문 변환 다시 설정 구성 요소의 스크린샷

지금 본문 변환 다시 설정 단추가 강조 표시된 재생 모드에서 본문 변환 다시 설정 구성 요소의 스크린샷.

  • 본문 변환 저장은 이제 초기화 변환으로 본 문 변환 다시 설정 구성 요소의 범위에 있는 모든 물리학 본문의 현재 위치와 회전을 저장합니다. 한 클라이언트에서만 호출합니다.

다음 단계