찾기
내용으로 건너뛰기
추적
문서의 이전 판을 선택했습니다!
저장하면 이 자료로 새 판을 만듭니다.
미디어 파일
{{tag>컴포넌트 리지드바디 물리}} ======리지드바디 (Rigidbody)====== ''Rigidbody''는 사용자의 ''GameObjects''가 물리력의 제어 하에서 동작 할 수 있게 하여 준다. 리지드바디는 사용자의 오브젝트가 현실 세상처럼 움직이게 만들어 힘과 회전력을 적용할 수 있게 하여 준다. GameObject는 중력의 영향을 받고 스크립트를 통해 추가된 힘의 영향력 하에 있거나, NVIDIA PhysX 물리력 엔진을 통하여 다른 오브젝트와 상호작용을 하려면, 반드시 Rigidbody을 포함하여야 함. 상호작용하는 모든 물체가 리지드바디 컴포넌트를 가져야 하는 것은 아니다. 예를 들어 배경으로 사용되는 부수거나 옮길 수 없는 벽이 있다면, 리지드바디 컴포넌트를 넣지 않고 그냥 사용한다. 이렇게 해도 상호작용이 가능하다. {{:unity3d:Inspector-Rigidbody.png}}\\ //리지드바디는 GameObjects가 물리적 영향력 하에 동작하게 하여 준다// =====속성===== |PROPS |질량 //Mass// |킬로그램으로 표시된 오브젝트의 무게. 다른 리지드바디에 비교하여 100배 이하 혹은 이상 이내에서 무게를 정할 것을 권유함. | |항력 //Drag// |힘을 받아 동작할 때 오브젝트에 가해지는 공기 저항력의 정도. 0은 저항력이 없는 상태를 말하고, 무한대면 오브젝트는 즉시 멈춰서 버립니다. | |각항력 //Angular Drag// |회전력에 의해 회전 시 오브젝트에 가해지는 공기 저항력의 정도. 0은 저항력이 없는 상태를 말하고, 무한대면 오브젝트는 즉시 멈춰서 버립니다. | |중력 사용 //Use Gravity// |이 속성이 켜지면, 오브젝트는 중력의 영향을 받는다. | |//Is Kinematic// |이 속성이 켜지면, 오브젝트는 물리 엔진에 의해 작동하지 않고, 그의 ''Transform''에 의해서만 조종될 수 있다. 이 속성은 움직이는 플랫폼에서 유용하며 또한 사용자가 ''HingeJoint''가 있는 리지드바디를 동영상화 하고 싶을 때도 유용함. | |보간 //Interpolate// |만일 사용자의 리지드바디 움직임에 경련이 보이면 이 중 한 옵션을 사용하여 보십시오. | |>>>//None// |보간법(Interpolation)이 적용되지 않는다. | |>>>//Interpolate// |이전 프레임의 Transform을 기반으로 Transform을 부드럽게 수행함. | |>>>//Extrapolate// |다음 프레임의 Transform을 예상하여 Transform을 부드럽게 수행함. | |충돌 검사 //Collision Detection// |오브젝트가 충돌을 감지하지 못하고 다른 오브젝트를 관통하는 것을 방지하기 위하여 사용된다. | |>>>//Discrete// |장면(scene) 내에서 다른 모든 콜라이더에 대한 신중한(Discreet) 충돌 감지를 사용함. 다른 콜라이더는 이것에 대한 충돌을 시험할 때 Discrete 충돌 감지를 사용할 것 이다. 일반 충돌에 사용 된다.(이것은 디폴트 값이다).| |>>>//Continuous// |동적 콜라이더에 (리지드바디를 가지고 있는) 대해서는 신중한(Discrete) 충돌 감지를 사용하고, 정적 메쉬콜라이더(static MeshColliders) (리지드바디가 없음)에 대해서는 지속적인 충돌감지를 사용함. 지속적인 동적(Continuous Dynamic)으로 설정된 리지드바디는 이 리지드바디에 대한 충돌을 테스트 할 때 지속적 충돌 감지를 사용할 것 이다. 다른 리지드바디는 신중한 충돌(Discreet Collision) 감지를 사용할 것 이다. 지속적인 동적(Continuous Dynamic) 리즈드바디가 충돌할 필요가 있는 오브젝트에 사용된다. (이것은 물리적 수행에 있어 커다란 임팩트가 있으므로, 빠른 오브젝트의 충돌에 별 문제가 없다면 Discrete로 남겨두기 바란다).| |>>>//Continuous Dynamic// |속성이 Continuous로 설정된 오브젝트나 지속적 동적 충돌(Continuous Dynamic Collision)에는 지속적 충돌 감지를 사용함. 이것 또한 (리지드바디가 없는)정적 메쉬콜라이더(static MeshColliders)에 대하여 지속적 충돌 감지를 사용할 것 이다. 다른 콜라이더에 대해서는 신중한(discrete) 충돌 감지를 사용함. 빠르게 움직이는 오브젝트에 사용된다.| |//Constraints// |리지드바디의 움직임에 대한 제약 :-| |위치 고정 >>>//Freeze Position//|월드에서 움직이는 리지드바디를 . X, Y, Z축에서 선택적으로 멈추게 함.| |회전 고정 >>>//Freeze Rotation//|월드에서 회전하는 리지드바디를 . X, Y, Z축에서 선택적으로 멈추게 함.| =====상세사항===== 리지드바디는 사용자의 GameObjects가 물리엔진의 제어 내에서 동작할 수 있게 함. 이것은 실감나는 충돌, 여러 종류의 조인트들, 그리고 여타의 아주 멋진 동작을 가능하게 함. 사용자의 GameObjects에 리지드바디에 힘을 가하여 조종하게 되면 단순한 Transform ''Component''보다는 아주 다른 느낌과 시각의 효과를 줄 수 있다. 일반적으로 사용자는 같은 GameObject에서 물리력을 적용하여 **리지드바디를 조종하는 것**과 값을 직접 변경하는 **변형(Transform)을 동시에 같이 할 수는 없고 ** 하나를 선택해야 함. 변형(Transform)과 리지드바디를 조종하는 것 사이의 가장 큰 차이는 힘의 사용이다. 리지드바디는 힘과 회전력을 받을 수 있지만, 변형(Transform)은 없다. 변형(Transform)도 해석하고 회전할 수 있지만 물리력을 사용하는 것과 같은 것은 아니다. 사용자가 직접 사용해보면 극명한 차이를 느낄 것 이다. 리지드바디에 힘과 회전력을 가하면 실제로 오브젝트의 Transform 컴포넌트의 위치와 회전을 변경함. 이렇기 때문에 __사용자는 둘 중 하나만을 사용해야 함__. 물리력을 사용하면서도 Transform을 변경하는 것은 충돌과 여타 다른 계산에서 문제를 일으킬 수 있다. 리지드바디가 물리엔진에 의해 영향을 받으려면 명시적으로 사용자의 GameObject에 추가하여야만 함. 사용자는 메뉴바에서 //Components->Physics->Rigidbody//에서 선택한 오브젝트에 리지드바디를 추가할 수 있다. 이제 사용자의 오브젝트는 물리적으로 완벽함. 해당 오브젝트는 중력하에서 추락하고 스크립트를 통해 힘을 받을 수 있으나, 만일 사용자가 원하는 대로 정확하게 행동하게 하려면''Collider''난 조인트(Joint)를 추가해야 할 수도 있다. ====Parenting==== 어느 오브젝트가 물리력 제어 하에 있을 때, 이의 변형부모(transform parents )가 움직이는 것과 반쯤 독립적으로 움직이다. 사용자가 어느 한 부모를 이동시키면, 부모는 리지드바디 자식을 같이 끌고 다닙니다. 하지만 해당 리지드바디는 여전히 중력에 추락하고 충돌 이벤트에 반응함. ====Scripting==== 사용자의 리지드바디를 제어하기 위하여, 사용자는 주로 스크립트를 사용하여 힘이나 회전력을 가할 것 이다. 이것을 하려면 오브젝트의 리지드바디에 //[[ScriptRef:Rigidbody.AddForce.html|AddForce()]]//와 //[[ScriptRef:Rigidbody.AddTorque.html|AddTorque()]]//를 호출함.사용자가 물리력을 사용할 경우 오브젝트의 Transform을 변경할 수 없다는 것을 기억하십시오. ====Animation==== 어떤 상황에서는, 주로 랙돌(ragdoll) 효과 생성에, 애니메이션과 물리력 사이에 오브젝트의 제어를 맞교환 할 필요가 있다. 이러한 목적을 위하여 리지드바디는 //[[ScriptRef:Rigidbody-isKinematic.html|isKinematic]]//으로 표시될 수 있다. 리지드바디가 //isKinematic//으로 표시되어 있는 한 충돌, 힘 혹은 여타 다른 부분의 physX에 대한 영향은 미치지 못함. 이 경우 사용자는 [[unity:class-Transform|Transform]] 콤포넌트를 바로 조종하여 해당 오브젝트를 제어해야 한다는 것을 의미함. 운동학적 리지드바디(Kinematic Rigidbodies)는 다른 오브젝트에 영향을 주겠지만 그 들 자신은 물리력에 영향을 받지 않는다. 예를 들어, Kinematic 오브젝트에 부착된 조인트는 다른 리지드바디가 부착되는 것을 제한하고, 운동학적 리지드바디는 충돌을 통해 다른 리지드바디에 영향을 줄 것 이다. ====Colliders==== 콜라이더는 리지드바디와 함께 충돌이 발생을 가능케 하려면 추가되어야 하는 다른 종류의 콤포넌트이다. 만일 2개의 리지드바디가 서로 충돌하면, 물리엔진은 두 오브젝트에 콜라이더가 부착되어 있지 않는 한 계산을 하지 않을 것 이다. 콜라이더가 없는 리지드바디는 물리력 시뮬레이션에서 서로를 관통하고 지나갈 뿐이다. {{:unity3d:RigidbodyandCollider.png}}\\ //콜라이더는 리지드바디의 물리적 경계를 정의함// 메뉴의//Component->Physics//에서 콜라더를 추가함. 각 콜라이의 콤포넌트 조회 페이지에서 더 많은 메뉴를 확인할 수 있다: * [[class-BoxCollider|Box Collider]] - 정육면체의 프리미티브 모양 * [[unity:class-SphereCollider|Sphere Collider]] - 구의 프리미티브 모양 * [[class-CapsuleCollider|Capsule Collider]] - 캡슐의 프리미티브 모양 * [[class-MeshCollider|Mesh Collider]] - Collider 오브젝트의 메쉬에서 콜라이더를 생성, 다른 메쉬 콜라이더와 충돌 할 수 없다 * [[unity:class-WheelCollider|Wheel Collider]] - 자동차와 여타 움직이는 교통수단을 위한 콜라이더 ====복합 콜라이더==== {{page>unity:comp-ColliderCompound}} ====지속적인 충돌 감지==== 지속적 충돌감지(Continuous collision detection is)는 빨리 움직이는 콜라이더가 서로를 관통하는 것을 방지할 수 있다. 노멀(//Discrete//) 충돌 감지를 사용하거나, 한 오브젝트가 한 프레임 내에서 콜라이더의 한쪽 면에 있고 다음 프레임에서 이미 해당 콜라이더를 지나쳤을 때 이 현상이 발생할 수 있다. 이것을 해결하기 위하여, 사용자는 빨리 움직이는 오브젝트의 리지드바디 상에 지속적 충돌감지(continuous collision detection) 옵션을 켤 수 있다. 리지드바디가 충돌감지 모드가 //Continuous// 혹은 //Continuous Dynamic//으로 설정된 여타의 다른 리지드바디를 서로 관통하는 것을 방지하려면 충돌 감지 모드를 //Continuous// 로 설정하여야 함. =====정확한 크기의 사용===== 사용자의 GameObject의 메쉬의 크기는 리지드바디의 질량보다 훨씬 더 중요함. 만일 사용자의 리지드바디가 예상한 대로 움직여주지 않으면 – 느리거나 떠다니거나 혹은 정확하게 충돌하지 않으면 – 사용자 에셋의 질량을 조정해 보십시오. 유니티의 디폴트 단위 크기는 1 단위 = 1 미터로 하여 사용자가 들여온 메쉬의 크기가 유지되고 물리력계산에도 적용된다. 예를 들어, 무너지는 고층빌딩은 장난감 블록으로 만든 타워와는 아무 다르게 동작하므로, 규모가 다른 오브젝트는 정확한 규모로 모델링이 되어야 함. 사용자가 만일 인간을 모델링 한다면, 유니티에서 2미터 가량 되도록 해야 함. 사용자 오브젝트가 정확한 크기를 가지고 있는지 확인하려면, 디폴트 규브와 비교하여 보십시오. 사용자가 큐브를 생성하려면 **GameObject->Create Other->Cube**를 사용하면 된다. 해당 큐브의 높이는 정확하게 1미터가 될 것이므로, 사용자은 인간 오브젝트는 2배쯤이 되어야 함. 사용자가 메쉬 그 자체를 조절할 수 없다면, 사용자는 ''Project View'' 에서 **Assets->Import Settings...**을 선택하여 특정 메쉬 에셋의 동일 스케일을 변경 할 수 있다. 여기서, 사용자는 스케일을 변경하고 사용자 메쉬를 다시 불러들이기 할 수 있다. 사용자의 게임이 사용자 오브젝트를 다른 규모로 발생하게 할 필요가 있다면, 사용자 Transform의 스케일 축의 값을 조절하는 것은 허용된다. 단점은 물리 시뮬레이션에서 해당 오브젝트가 발생할 때 더 많은 작업을 해야 한다는 것이며 이것이 사용자 게임의 성능 저하를 가져올 수 있다. 이것이 비로 엄청난 손실은 아니지만 다른 두 옵션으로 사용자의 스케일을 최종 설정하는 것보다는 덜 효율적이다. 또한 일정하지 않은 스케일을 사용하면 육아(Parenting)이 사용되었을 때 원치 않는 행동이 생길 수도 있다는 것을 기억하십시오. 이러한 이유들로 사용자의 모델링 어플리케이션에서 정확한 스케일을 사용하여 오브젝트를 생성하는 것이 항상 최고의 선택이라는 것 이다. =====Hints===== * 두 리지드바디의 상대적 //Mass//가 그들이 서로 충돌했을 때 어떻게 반응하는 지를 결정함. * 한 리지드바디를 다른 것보다 //Mass//를 크게 한다고 해서 다른 것보다 빨리 자유 낙하하는 것은 아니다. //Drag//를 사용하십시오. * 낮은 //Drag// 값을 설정하면 해당 오브젝트가 무거워 보이게 함. 높은 값은 가벼워 보이게 함. //Drag//의 전형적인 값은 .001(단단한 강철 블록)과 10(새털)의 사이에서 결정함. * 사용자가 사용자 오브젝트를 Transform 콤포넌트에서 직접 조정하면서 물리력을 원한다면, 리지드바디를 하나 추가하고 그것을 Kinematic으로 설정하십시오. * 사용자가 Transform 콤포넌트를 사용하여 GameObject를 움직이고 있으나 Collision/Trigger 메시지를 수신하고 싶다면, 사용자는 움직이는 오브젝트에 리지드바디를 부착하여야 함. {{tag>유니티 unity}} * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.class-Rigidbody|유니티코리아위키]] (CC BY-NC-SA 2.0)
2+1?
이 필드는 비어 있도록 유지하세요:
저장
미리 보기
취소
편집 요약
참고: 이 문서를 편집하면 내용은 다음 라이선스에 따라 배포하는 데 동의하는 것으로 간주합니다:
CC Attribution-Noncommercial-Share Alike 4.0 International
연결문서
CharacterController
Hi경첩 조인트
트랜스폼 Transform
바퀴 충돌 기(Wheel Collider)
Physics Components
Forcemode
유니티3D ( Unity3D )
간단한 일인칭 만들기
상태 동기화 세부사항들(State Synchronization Details)
물리 (피직스) Physics
2개 더 보기...
문서 도구
문서 보기
이전 판
연결문서
맨 위로
다크 모드로 보기
☀️
Toggle Menu
유니티3D ( Unity3D )
너두 고쳐두 됩니다.
사이트 도구
최근 바뀜
미디어 관리자
사이트맵
사용자 도구
등록
로긴
최근 수정된 문서
misuse_topical5
노박
unique_items
dinner_bell
deputy_beagle
ratslayer
one_for_my_baby
alerio
power_fist
제거됨
fixer
climb_ev_ry_mountain
companion
[장비 분실]
crashed_vertibird
brotherhood_t-51b_power_armor
marco
i_forgot_to_remember_to_forget
cateye