수색…
리지드 바디
개요
리지드 바디 구성 요소는 GameObject가 힘에 반응 할 수 있다는 점에서 장면에 물리적 인 존재감 을 부여합니다. GameObject에 직접 힘을가하거나 중력이나 다른 리지드 바디가 타격하는 것과 같은 외부 힘에 반응하도록 할 수 있습니다.
강체 구성 요소 추가
Component> Physics> Rigidbody를 클릭하여 리짓 바디를 추가 할 수 있습니다.
Rigidbody 객체 이동
Rigidbody를 GameObject에 적용한 경우 변형을 조작하는 대신 힘 또는 토크를 사용하여 이동하는 것이 좋습니다. 이 경우 AddForce()
또는 AddTorque()
메서드를 사용하십시오.
// Add a force to the order of myForce in the forward direction of the Transform.
GetComponent<Rigidbody>().AddForce(transform.forward * myForce);
// Add torque about the Y axis to the order of myTurn.
GetComponent<Rigidbody>().AddTorque(transform.up * torque * myTurn);
질량
Rigidbody GameObject의 질량을 변경하여 다른 Rigidbodies 및 힘과 어떻게 반응하는지 영향을 줄 수 있습니다. 더 높은 질량은 GameObject가 다른 물리 기반 GameObjects에 더 많은 영향을 미칠 것이며 더 큰 힘을 요구할 것임을 의미합니다. 질량이 서로 다른 물체는 동일한 드래그 값을 갖는 경우 동일한 속도로 떨어집니다. 코드의 질량을 변경하려면 :
GetComponent<Rigidbody>().mass = 1000;
견인
끌기 값이 높을수록 움직이는 동안 물체가 더 느려집니다. 반대하는 힘처럼 생각하십시오. 코드에서 드래그를 변경하려면 다음을 수행하십시오.
GetComponent<Rigidbody>().drag = 10;
isKinematic
Rigidbody를 Kinematic 으로 표시하면 다른 군대의 영향을받을 수 없지만 다른 GameObject에 영향을 미칠 수 있습니다. 코드를 변경하려면 다음을 수행하십시오.
GetComponent<Rigidbody>().isKinematic = true;
제약 조건
또한 각 축에 구속 조건을 추가하여 Rigidbody의 위치 또는 회전을 고정시킬 수 있습니다. 기본값은 RigidbodyConstraints.None
이며 여기에 나와 있습니다.
코드의 제약 조건의 예 :
// Freeze rotation on all axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation
// Freeze position on all axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezePosition
// Freeze rotation and motion an all axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeAll
비트 OR 연산자 |
다음과 같이 여러 제약 조건을 결합합니다.
// Allow rotation on X and Y axes and motion on Y and Z axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezePositionZ |
RigidbodyConstraints.FreezeRotationX;
충돌
리지드 바디가있는 GameObject에서 충돌에 반응하기를 원한다면 콜리더를 추가해야합니다. 충돌 자의 유형은 다음과 같습니다.
- 상자 충돌 자
- 구형 충돌기
- 캡슐 콜 라이더
- 휠 충돌 장치
- 메쉬 충돌기
GameObject에 둘 이상의 충돌자를 적용하면이를 복합 충돌 자라고 부릅니다.
OnTriggerEnter()
, OnTriggerStay()
및 OnTriggerExit()
메서드를 사용하려면 충돌자를 트리거 로 만들 수 있습니다. 트리거 콜리더는 물리적 인 충돌에 반응하지 않으며, 다른 GameObject는 단순히 그것을 통과합니다. 그것들은 다른 GameObject가 특정 영역에 있는지 여부를 감지하는데 유용합니다. 예를 들어, 아이템을 수집 할 때, 우리는 그것을 실행할 수 있기를 원할 것입니다.
엄밀한 몸의 중력
RigidBody
의 useGravity
속성은 중력에 영향을 주는지 여부를 제어합니다. false
설정하면 RigidBody
는 외부 공간에서처럼 작동합니다 (일정한 힘이 어떤 방향으로 적용되지 않습니다).
GetComponent<RigidBody>().useGravity = false;
중력에 의해 제어되는 모션을 제외한 RigidBody
다른 모든 속성이 필요한 상황에서 매우 유용합니다.
활성화되면 RigidBody
는 중력에 의해 영향을받습니다. 물리력 설정에서 Physics Settings
.
중력은 초당 세계 제곱 수로 정의되며 여기에 3 차원 벡터로 입력됩니다. 즉, 예제 이미지의 설정을 사용하면 useGravity
속성이 True
설정된 모든 RigidBodies
가 초당 9.81 월드 유닛 (유니티 좌표계 지점에서 음의 y 값 아래로 등) 아래쪽 방향으로 초당.