Added hidden float reverting setting (hidden, because it is still experimental)
This reverts the effect of the float correction when the avatar has bent knees.
This commit is contained in:
parent
ddb76e71de
commit
c852dc4a1e
@ -2140,6 +2140,8 @@ namespace Passer.Humanoid {
|
|||||||
/// Correct floating avatars when user is taller than the avatar
|
/// Correct floating avatars when user is taller than the avatar
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool floatCorrection = false;
|
public bool floatCorrection = false;
|
||||||
|
public bool floatReverting = false;
|
||||||
|
private float floatCorrectionDistance = 0.0F;
|
||||||
|
|
||||||
protected void CheckGrounded() {
|
protected void CheckGrounded() {
|
||||||
Vector3 footBase = GetHumanoidPosition();
|
Vector3 footBase = GetHumanoidPosition();
|
||||||
@ -2179,8 +2181,24 @@ namespace Passer.Humanoid {
|
|||||||
if (floatCorrection) {
|
if (floatCorrection) {
|
||||||
float leftFootBoneDistance = leftFootTarget.foot.bone.transform.position.y - leftFootTarget.foot.target.transform.position.y;
|
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;
|
float rightFootBoneDistance = rightFootTarget.foot.bone.transform.position.y - rightFootTarget.foot.target.transform.position.y;
|
||||||
if (leftFootBoneDistance > 0.02F && rightFootBoneDistance > 0.02F)
|
if (leftFootBoneDistance > 0.02F && rightFootBoneDistance > 0.02F) {
|
||||||
AdjustTrackingHeight(-0.01F);
|
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}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user