양쪽 이전 판이전 판다음 판 | 이전 판 |
unity:rigidbody [2018/01/19 02:16] – [상세사항] V_L | unity:rigidbody [2022/10/09 23:50] (현재) – [Hints] V_L |
---|
| |
''Rigidbody''는 사용자의 ''GameObjects''가 물리력의 제어 하에서 동작 할 수 있게 하여 준다. 리지드바디는 사용자의 오브젝트가 현실 세상처럼 움직이게 만들어 힘과 회전력을 적용할 수 있게 하여 준다. GameObject는 중력의 영향을 받고 스크립트를 통해 추가된 힘의 영향력 하에 있거나, NVIDIA PhysX 물리력 엔진을 통하여 다른 오브젝트와 상호작용을 하려면, 반드시 Rigidbody을 포함하여야 함. | ''Rigidbody''는 사용자의 ''GameObjects''가 물리력의 제어 하에서 동작 할 수 있게 하여 준다. 리지드바디는 사용자의 오브젝트가 현실 세상처럼 움직이게 만들어 힘과 회전력을 적용할 수 있게 하여 준다. GameObject는 중력의 영향을 받고 스크립트를 통해 추가된 힘의 영향력 하에 있거나, NVIDIA PhysX 물리력 엔진을 통하여 다른 오브젝트와 상호작용을 하려면, 반드시 Rigidbody을 포함하여야 함. |
| |
| 상호작용하는 모든 물체가 리지드바디 컴포넌트를 가져야 하는 것은 아니다. 예를 들어 배경으로 사용되는 부수거나 옮길 수 없는 벽이 있다면, 리지드바디 컴포넌트를 넣지 않고 그냥 사용한다. 이렇게 해도 상호작용이 가능하다. |
| |
{{:unity3d:Inspector-Rigidbody.png}}\\ | {{:unity3d:Inspector-Rigidbody.png}}\\ |
| |
|PROPS | |PROPS |
|//Mass// |킬로그램으로 표시된 오브젝트의 무게. 다른 리지드바디에 비교하여 100배 이하 혹은 이상 이내에서 무게를 정할 것을 권유함. | | |질량 //Mass// |킬로그램으로 표시된 오브젝트의 무게. 다른 리지드바디에 비교하여 100배 이하 혹은 이상 이내에서 무게를 정할 것을 권유함. | |
|//Drag// |힘을 받아 동작할 때 오브젝트에 가해지는 공기 저항력의 정도. 0은 저항력이 없는 상태를 말하고, 무한대면 오브젝트는 즉시 멈춰서 버립니다. | | |항력 //Drag// |힘을 받아 동작할 때 오브젝트에 가해지는 공기 저항력의 정도. 0은 저항력이 없는 상태를 말하고, 무한대면 오브젝트는 즉시 멈춰서 버립니다. | |
|//Angular Drag// |회전력에 의해 회전 시 오브젝트에 가해지는 공기 저항력의 정도. 0은 저항력이 없는 상태를 말하고, 무한대면 오브젝트는 즉시 멈춰서 버립니다. | | |각항력 //Angular Drag// |회전력에 의해 회전 시 오브젝트에 가해지는 공기 저항력의 정도. 0은 저항력이 없는 상태를 말하고, 무한대면 오브젝트는 즉시 멈춰서 버립니다. | |
|//Use Gravity// |이 속성이 켜지면, 오브젝트는 중력의 영향을 받는다. | | |중력 사용 //Use Gravity// |이 속성이 켜지면, 오브젝트는 중력의 영향을 받는다. | |
|//Is Kinematic// |이 속성이 켜지면, 오브젝트는 물리 엔진에 의해 작동하지 않고, 그의 ''Transform''에 의해서만 조종될 수 있다. 이 속성은 움직이는 플랫폼에서 유용하며 또한 사용자가 ''HingeJoint''가 있는 리지드바디를 동영상화 하고 싶을 때도 유용함. | | |//Is Kinematic// |이 속성이 켜지면, 오브젝트는 물리 엔진에 의해 작동하지 않고, 그의 ''Transform''에 의해서만 조종될 수 있다. 이 속성은 움직이는 플랫폼에서 유용하며 또한 사용자가 ''HingeJoint''가 있는 리지드바디를 동영상화 하고 싶을 때도 유용함. | |
|//Interpolate// |만일 사용자의 리지드바디 움직임에 경련이 보이면 이 중 한 옵션을 사용하여 보십시오. | | |보간 //Interpolate// |만일 사용자의 리지드바디 움직임에 경련이 보이면 이 중 한 옵션을 사용하여 보십시오. | |
|>>>//None// |보간법(Interpolation)이 적용되지 않는다. | | |>>>//None// |보간법(Interpolation)이 적용되지 않는다. | |
|>>>//Interpolate// |이전 프레임의 Transform을 기반으로 Transform을 부드럽게 수행함. | | |>>>//Interpolate// |이전 프레임의 Transform을 기반으로 Transform을 부드럽게 수행함. | |
|>>>//Extrapolate// |다음 프레임의 Transform을 예상하여 Transform을 부드럽게 수행함. | | |>>>//Extrapolate// |다음 프레임의 Transform을 예상하여 Transform을 부드럽게 수행함. | |
|//Freeze Rotation// |이 속성이 켜지면, GameObject는 스크립트를 통한 충돌이나 힘에 의해서는 절대 회전하지 않을 것 이다. 오직 //transform.Rotate()//을 사용하여 회전할 것 이다.| | |충돌 검사 //Collision Detection// |오브젝트가 충돌을 감지하지 못하고 다른 오브젝트를 관통하는 것을 방지하기 위하여 사용된다. | |
|//Collision Detection// |오브젝트가 충돌을 감지하지 못하고 다른 오브젝트를 관통하는 것을 방지하기 위하여 사용된다. | | |
|>>>//Discrete// |장면(scene) 내에서 다른 모든 콜라이더에 대한 신중한(Discreet) 충돌 감지를 사용함. 다른 콜라이더는 이것에 대한 충돌을 시험할 때 Discrete 충돌 감지를 사용할 것 이다. 일반 충돌에 사용 된다.(이것은 디폴트 값이다).| | |>>>//Discrete// |장면(scene) 내에서 다른 모든 콜라이더에 대한 신중한(Discreet) 충돌 감지를 사용함. 다른 콜라이더는 이것에 대한 충돌을 시험할 때 Discrete 충돌 감지를 사용할 것 이다. 일반 충돌에 사용 된다.(이것은 디폴트 값이다).| |
|>>>//Continuous// |동적 콜라이더에 (리지드바디를 가지고 있는) 대해서는 신중한(Discrete) 충돌 감지를 사용하고, 정적 메쉬콜라이더(static MeshColliders) (리지드바디가 없음)에 대해서는 지속적인 충돌감지를 사용함. 지속적인 동적(Continuous Dynamic)으로 설정된 리지드바디는 이 리지드바디에 대한 충돌을 테스트 할 때 지속적 충돌 감지를 사용할 것 이다. 다른 리지드바디는 신중한 충돌(Discreet Collision) 감지를 사용할 것 이다. 지속적인 동적(Continuous Dynamic) 리즈드바디가 충돌할 필요가 있는 오브젝트에 사용된다. (이것은 물리적 수행에 있어 커다란 임팩트가 있으므로, 빠른 오브젝트의 충돌에 별 문제가 없다면 Discrete로 남겨두기 바란다).| | |>>>//Continuous// |동적 콜라이더에 (리지드바디를 가지고 있는) 대해서는 신중한(Discrete) 충돌 감지를 사용하고, 정적 메쉬콜라이더(static MeshColliders) (리지드바디가 없음)에 대해서는 지속적인 충돌감지를 사용함. 지속적인 동적(Continuous Dynamic)으로 설정된 리지드바디는 이 리지드바디에 대한 충돌을 테스트 할 때 지속적 충돌 감지를 사용할 것 이다. 다른 리지드바디는 신중한 충돌(Discreet Collision) 감지를 사용할 것 이다. 지속적인 동적(Continuous Dynamic) 리즈드바디가 충돌할 필요가 있는 오브젝트에 사용된다. (이것은 물리적 수행에 있어 커다란 임팩트가 있으므로, 빠른 오브젝트의 충돌에 별 문제가 없다면 Discrete로 남겨두기 바란다).| |
|>>>//Continuous Dynamic// |속성이 Continuous로 설정된 오브젝트나 지속적 동적 충돌(Continuous Dynamic Collision)에는 지속적 충돌 감지를 사용함. 이것 또한 (리지드바디가 없는)정적 메쉬콜라이더(static MeshColliders)에 대하여 지속적 충돌 감지를 사용할 것 이다. 다른 콜라이더에 대해서는 신중한(discrete) 충돌 감지를 사용함. 빠르게 움직이는 오브젝트에 사용된다.| | |>>>//Continuous Dynamic// |속성이 Continuous로 설정된 오브젝트나 지속적 동적 충돌(Continuous Dynamic Collision)에는 지속적 충돌 감지를 사용함. 이것 또한 (리지드바디가 없는)정적 메쉬콜라이더(static MeshColliders)에 대하여 지속적 충돌 감지를 사용할 것 이다. 다른 콜라이더에 대해서는 신중한(discrete) 충돌 감지를 사용함. 빠르게 움직이는 오브젝트에 사용된다.| |
|//Constraints// |리지드바디의 움직임에 대한 제약 :-| | |//Constraints// |리지드바디의 움직임에 대한 제약 :-| |
|>>>//Freeze Position//|월드에서 움직이는 리지드바디를 . X, Y, Z축에서 선택적으로 멈추게 함.| | |위치 고정 >>>//Freeze Position//|월드에서 움직이는 리지드바디를 . X, Y, Z축에서 선택적으로 멈추게 함.| |
|>>>//Freeze Rotation//|월드에서 회전하는 리지드바디를 . X, Y, Z축에서 선택적으로 멈추게 함.| | |회전 고정 >>>//Freeze Rotation//|월드에서 회전하는 리지드바디를 . X, Y, Z축에서 선택적으로 멈추게 함.| |
| |
=====상세사항===== | =====상세사항===== |
====Scripting==== | ====Scripting==== |
| |
사용자의 리지드바디를 제어하기 위하여, 사용자는 주로 스크립트를 사용하여 힘이나 회전력을 가할 것 이다. 이것을 하려면 오브젝트의 리지드바디에 //[[ScriptRef:Rigidbody.AddForce.html|AddForce()]]//와 //[[ScriptRef:Rigidbody.AddTorque.html|AddTorque()]]//를 호출함.사용자가 물리력을 사용할 경우 오브젝트의 Transform을 변경할 수 없다는 것을 기억하십시오. | 사용자의 리지드바디를 제어하기 위하여, 사용자는 주로 스크립트를 사용하여 힘이나 회전력을 가할 것 이다. 이것을 하려면 오브젝트의 리지드바디에 //[[ScriptRef:Rigidbody.AddForce.html|AddForce()]]//와 //[[AddTorque|AddTorque()]]//를 호출함.사용자가 물리력을 사용할 경우 오브젝트의 Transform을 변경할 수 없다는 것을 기억하십시오. |
| |
====Animation==== | ====Animation==== |
| |
사용자의 게임이 사용자 오브젝트를 다른 규모로 발생하게 할 필요가 있다면, 사용자 Transform의 스케일 축의 값을 조절하는 것은 허용된다. 단점은 물리 시뮬레이션에서 해당 오브젝트가 발생할 때 더 많은 작업을 해야 한다는 것이며 이것이 사용자 게임의 성능 저하를 가져올 수 있다. 이것이 비로 엄청난 손실은 아니지만 다른 두 옵션으로 사용자의 스케일을 최종 설정하는 것보다는 덜 효율적이다. 또한 일정하지 않은 스케일을 사용하면 육아(Parenting)이 사용되었을 때 원치 않는 행동이 생길 수도 있다는 것을 기억하십시오. 이러한 이유들로 사용자의 모델링 어플리케이션에서 정확한 스케일을 사용하여 오브젝트를 생성하는 것이 항상 최고의 선택이라는 것 이다. | 사용자의 게임이 사용자 오브젝트를 다른 규모로 발생하게 할 필요가 있다면, 사용자 Transform의 스케일 축의 값을 조절하는 것은 허용된다. 단점은 물리 시뮬레이션에서 해당 오브젝트가 발생할 때 더 많은 작업을 해야 한다는 것이며 이것이 사용자 게임의 성능 저하를 가져올 수 있다. 이것이 비로 엄청난 손실은 아니지만 다른 두 옵션으로 사용자의 스케일을 최종 설정하는 것보다는 덜 효율적이다. 또한 일정하지 않은 스케일을 사용하면 육아(Parenting)이 사용되었을 때 원치 않는 행동이 생길 수도 있다는 것을 기억하십시오. 이러한 이유들로 사용자의 모델링 어플리케이션에서 정확한 스케일을 사용하여 오브젝트를 생성하는 것이 항상 최고의 선택이라는 것 이다. |
| |
| |
| =====메소드===== |
| |
| |
| * AddExplosionForce Applies a force to a rigidbody that simulates explosion effects. |
| * AddForce Adds a force to the Rigidbody. |
| * AddForceAtPosition Applies force at position. As a result this will apply a torque and force on the object. |
| * AddRelativeForce Adds a force to the rigidbody relative to its coordinate system. |
| * AddRelativeTorque Adds a torque to the rigidbody relative to its coordinate system. |
| * AddTorque Adds a torque to the rigidbody. |
| * ClosestPointOnBounds The closest point to the bounding box of the attached colliders. |
| * GetPointVelocity The velocity of the rigidbody at the point worldPoint in global space. |
| * GetRelativePointVelocity The velocity relative to the rigidbody at the point relativePoint. |
| * IsSleeping Is the rigidbody sleeping? |
| * MovePosition Moves the kinematic Rigidbody towards position. |
| * MoveRotation Rotates the rigidbody to rotation. |
| * ResetCenterOfMass Reset the center of mass of the rigidbody. |
| * ResetInertiaTensor Reset the inertia tensor value and rotation. |
| * SetDensity Sets the mass based on the attached colliders assuming a constant density. |
| * Sleep Forces a rigidbody to sleep at least one frame. |
| * SweepTest Tests if a rigidbody would collide with anything, if it was moved through the Scene. |
| * SweepTestAll Like Rigidbody.SweepTest, but returns all hits. |
| * WakeUp Forces a rigidbody to wake up. |
| |
| |
=====Hints===== | =====Hints===== |