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; }
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; } }
/* * 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; } }