diff --git a/Runtime/HumanoidControl/Scripts/HumanoidControl.cs b/Runtime/HumanoidControl/Scripts/HumanoidControl.cs index 4d0070d..69fb2d3 100644 --- a/Runtime/HumanoidControl/Scripts/HumanoidControl.cs +++ b/Runtime/HumanoidControl/Scripts/HumanoidControl.cs @@ -2140,6 +2140,8 @@ namespace Passer.Humanoid { /// Correct floating avatars when user is taller than the avatar /// public bool floatCorrection = false; + public bool floatReverting = false; + private float floatCorrectionDistance = 0.0F; protected void CheckGrounded() { Vector3 footBase = GetHumanoidPosition(); @@ -2179,8 +2181,24 @@ namespace Passer.Humanoid { if (floatCorrection) { float leftFootBoneDistance = leftFootTarget.foot.bone.transform.position.y - leftFootTarget.foot.target.transform.position.y; float rightFootBoneDistance = rightFootTarget.foot.bone.transform.position.y - rightFootTarget.foot.target.transform.position.y; - if (leftFootBoneDistance > 0.02F && rightFootBoneDistance > 0.02F) - AdjustTrackingHeight(-0.01F); + if (leftFootBoneDistance > 0.02F && rightFootBoneDistance > 0.02F) { + float correction = -0.01F; + AdjustTrackingHeight(correction); + floatCorrectionDistance += correction; + Debug.Log($"{floatCorrectionDistance} {leftFootBoneDistance} {rightFootBoneDistance}"); + } + } + if (floatReverting && floatCorrectionDistance < 0) { + float leftFootDistance = leftFootTarget.upperLeg.bone.transform.position.y - leftFootTarget.foot.bone.transform.position.y; + float leftBendingDistance = (leftFootTarget.upperLeg.bone.length + leftFootTarget.lowerLeg.bone.length) - leftFootDistance; + float rightFootDistance = rightFootTarget.upperLeg.bone.transform.position.y - rightFootTarget.foot.bone.transform.position.y; + float rightBendingDistance = (rightFootTarget.upperLeg.bone.length + rightFootTarget.lowerLeg.bone.length) - rightFootDistance; + if (leftBendingDistance > 0.02 && rightBendingDistance > 0.02) { + float correction = +0.01F; + AdjustTrackingHeight(correction); + floatCorrectionDistance += correction; + Debug.Log($"{floatCorrectionDistance} {leftBendingDistance} {rightBendingDistance}"); + } } }