void OnGoRagdoll()
        {
            humanoidAim.SetRightHandTransform(ragdollRightHand);

            // Debug.Log("went ragdoll");

            movementController.EnableScriptedMove(GetInstanceID(), true);

            // if we're falling, dont let us go "up"
            // ragdoll was falling up stairs...

            characterMovement.preventUpwardsMotion = true;



            /*
             *  when falling
             *
             *  use normal transform stuff (dont want the character controller collisions messing stuff up)
             *  for falling /calculating fall ( we need all exterion collisions to reach ragdol bones)
             *  and teh characer chontroller acts as a 'protective shell' when it's enabled
             */


            characterMovement.usePhysicsController = false;



            Ragdoll.Element hipBone = ragdollController.ragdoll.RootBone();
            cameraScript.m_Target   = hipBone.transform;
            cameraScript.updateMode = VariableUpdateScript.UpdateMode.FixedUpdate;
        }
        void OnBlendToAnim()
        {
            humanoidAim.SetRightHandTransform(null);

            Ragdoll.Element hipBone = ragdollController.ragdoll.RootBone();
            cameraScript.m_Target   = hipBone.followTarget.transform;
            cameraScript.updateMode = originalUpdateMode;
        }
예제 #3
0
        void AttachToCharacter(Character character)
        {
            if (controlledCharacter != null)
            {
                //enable ai for the last controlled character
                controlledCharacter.GetComponent <AIControl>().enabled = true;
            }

            controlledCharacter = character;

            if (controlledCharacter != null)
            {
                //disable ai for our new controlled character
                controlledCharacter.GetComponent <AIControl>().enabled = false;

                Ragdoll.Element hipBone = controlledCharacter.ragdollController.ragdoll.RootBone();
                camFollow.target     = hipBone.followTarget.transform;
                camFollow.updateMode = UpdateMode.Update;
            }
        }
예제 #4
0
        /*
         *              switch camera to follow ragdoll	or animated hips based on ragdoll state
         */
        void CheckCameraTarget()
        {
            if (!controlledCharacter)
            {
                camFollow.target = null;
                return;
            }

            RagdollController ragdollController = controlledCharacter.ragdollController;

            //switch camera to follow ragdoll (or animated hips)
            if (ragdollController.ragdollRenderersEnabled == cameraTargetIsAnimatedHips)
            {
                cameraTargetIsAnimatedHips = !cameraTargetIsAnimatedHips;

                Ragdoll.Element hipBone = ragdollController.ragdoll.RootBone();
                camFollow.target     = cameraTargetIsAnimatedHips ? hipBone.followTarget.transform : hipBone.transform;
                camFollow.updateMode = cameraTargetIsAnimatedHips ? UpdateMode.Update : UpdateMode.FixedUpdate;
            }
        }