Пример #1
0
        bool _createRagdollManager()
        {
            RagdollManager ragMan = character.GetComponent <RagdollManager>();

            if (!ragMan)
            {
                //ragMan = character.AddComponent<RagdollManager>();
                ragMan = Undo.AddComponent <RagdollManager>(character);
            }
            if (useHumanoidSetupForRagdollBones)
            {
                Animator anim = character.GetComponent <Animator>();
                if (!anim)
                {
                    Debug.LogError("Cannot find 'animator' component." + " < " + this.ToString() + ">"); return(false);
                }

                ragdollCreator.pelvis      = anim.GetBoneTransform(HumanBodyBones.Hips);
                ragdollCreator.leftHips    = anim.GetBoneTransform(HumanBodyBones.LeftUpperLeg);
                ragdollCreator.leftKnee    = anim.GetBoneTransform(HumanBodyBones.LeftLowerLeg);
                ragdollCreator.leftFoot    = anim.GetBoneTransform(HumanBodyBones.LeftFoot);
                ragdollCreator.rightHips   = anim.GetBoneTransform(HumanBodyBones.RightUpperLeg);
                ragdollCreator.rightKnee   = anim.GetBoneTransform(HumanBodyBones.RightLowerLeg);
                ragdollCreator.rightFoot   = anim.GetBoneTransform(HumanBodyBones.RightFoot);
                ragdollCreator.leftArm     = anim.GetBoneTransform(HumanBodyBones.LeftUpperArm);
                ragdollCreator.leftElbow   = anim.GetBoneTransform(HumanBodyBones.LeftLowerArm);
                ragdollCreator.rightArm    = anim.GetBoneTransform(HumanBodyBones.RightUpperArm);
                ragdollCreator.rightElbow  = anim.GetBoneTransform(HumanBodyBones.RightLowerArm);
                ragdollCreator.middleSpine = anim.GetBoneTransform(HumanBodyBones.Chest);
                ragdollCreator.head        = anim.GetBoneTransform(HumanBodyBones.Head);

                ragdollCreator.totalMass = totalMass;

                ragdollCreator.CheckConsistency();
                ragdollCreator.CalculateAxes();
                ragdollCreator.Create();

                ragMan.RagdollBones = new Transform[(int)BodyParts.BODY_PART_COUNT];
                ragMan.RagdollBones[(int)BodyParts.Spine]         = ragdollCreator.pelvis;
                ragMan.RagdollBones[(int)BodyParts.Chest]         = ragdollCreator.middleSpine;
                ragMan.RagdollBones[(int)BodyParts.Head]          = ragdollCreator.head;
                ragMan.RagdollBones[(int)BodyParts.LeftShoulder]  = ragdollCreator.leftArm;
                ragMan.RagdollBones[(int)BodyParts.LeftElbow]     = ragdollCreator.leftElbow;
                ragMan.RagdollBones[(int)BodyParts.RightShoulder] = ragdollCreator.rightArm;
                ragMan.RagdollBones[(int)BodyParts.RightElbow]    = ragdollCreator.rightElbow;
                ragMan.RagdollBones[(int)BodyParts.LeftHip]       = ragdollCreator.leftHips;
                ragMan.RagdollBones[(int)BodyParts.LeftKnee]      = ragdollCreator.leftKnee;
                ragMan.RagdollBones[(int)BodyParts.RightHip]      = ragdollCreator.rightHips;
                ragMan.RagdollBones[(int)BodyParts.RightKnee]     = ragdollCreator.rightKnee;
                RagdollManager.AddBodyColliderScripts(ragMan);


                ragdollCreator = null;
            }

            return(true);
        }
 void OnWizardCreate()
 {
     ragdollCreator.CheckConsistency();
     ragdollCreator.CalculateAxes();
     ragdollCreator.Create();
 }