예제 #1
0
        private void ActivateRagdollParts(bool activate)
        {
            controller.ControllerEnabled(!activate);

            for (int i = 0, length = rigidbodyComponents.Count; i < length; i++)
            {
                RigidbodyComponent rigidbody   = rigidbodyComponents[i];
                Collider           partColider = rigidbody.GetRigidBody().GetComponent <Collider>();

                if (partColider == null)
                {
                    const string colliderNodeSufix = "_ColliderRotator";
                    string       childName         = rigidbody.GetRigidBody().name + colliderNodeSufix;
                    Transform    transform         = rigidbody.GetRigidBody().transform.Find(childName);
                    partColider = transform.GetComponent <Collider>();
                }

                partColider.isTrigger = !activate;

                if (activate)
                {
                    rigidbody.GetRigidBody().isKinematic = false;
                    StartCoroutine(FixTransformAndEnableJoint(rigidbody));
                }
                else
                {
                    rigidbody.GetRigidBody().isKinematic = true;
                }
            }
        }
예제 #2
0
 public void AddExtraMove(Vector3 move)
 {
     if (IsRagdolled())
     {
         Vector3 airMove = new Vector3(move.x * AirSpeed, 0f, move.z * AirSpeed);
         for (int i = 0, length = rigidbodyComponents.Count; i < length; i++)
         {
             RigidbodyComponent rigidbodyComponent = rigidbodyComponents[i];
             rigidbodyComponent.GetRigidBody().AddForce(airMove / 100f, ForceMode.VelocityChange);
         }
     }
 }