private void Update() { if (currentActivationTime != -1 && currentActivationTime < activationTime) { currentActivationTime = MyMath.min(activationTime, currentActivationTime + Time.deltaTime); //to keep the leg in "reset" position while making raise from ragdoll step.step.reset(stepper.transform.position, stepper.transform.rotation); step.step.undockCurTime = 0; bones.setTarget(step.step.posAbs, step.step.footOrientation); if (currentActivationTime == activationTime) { mixer.enabled = false; switcher.canRiseFromRagdoll = false; stepper.needsUpdate = true;//finally acquire new layout } else { mixer.progress = currentActivationTime / activationTime; } } if (isRagdollOld != isRagdoll) { isRagdollOld = isRagdoll; if (isRagdoll) { bodyJoint.connectedBody = stepper.transform.GetComponent <Rigidbody>(); mixer.enabled = false; switcher.startRagdoll(); switcher.canRiseFromRagdoll = false; step.enabled = false; bones.enabled = false; stepper.needsUpdate = true; } else { bodyJoint.connectedBody = null; switcher.stopRagdoll(); switcher.canRiseFromRagdoll = true; currentActivationTime = 0; mixer.progress = 0; bones.enabled = true; //stepper.needsUpdate = true;//to activate new layout immediately, but then invisible leg will step while rasing from ragdoll step.enabled = true; mixer.enabled = true; } } }
public void revive() { reviving = 0.5f; ragdoller.stopRagdoll(); turnOnStepper(); animator.enabled = true; animator.SetTrigger("Revive"); animationToRagdoll.enabled = true; animationToRagdoll.progress = 1; allToStepper.enabled = true; allToStepper.progress = 0; }