using UnityEngine; public class StandingDataHandler : MonoBehaviour { public Rigidbody mainRig; public float sinceGrounded; public float sinceLanded; public bool isGrounded; public float distanceToGround = 1f; private bool hasRecievedTouchedGround; private MovementDataHandler moveMentData; private PlayerKnockback knockback; private WobbleShake wobbleShake; private void Start() { wobbleShake = GetComponentInChildren(); knockback = GetComponent(); } private void FixedUpdate() { sinceGrounded += Time.fixedDeltaTime; sinceLanded += Time.fixedDeltaTime; moveMentData = GetComponent(); if ((double)sinceGrounded > 0.1) { isGrounded = false; } } private void LateUpdate() { hasRecievedTouchedGround = false; } public void TouchGround(float distance, Vector3 normal) { if (sinceGrounded > 0.5f && (bool)wobbleShake) { wobbleShake.AddShake(-Vector3.up * 5f * Mathf.Pow(sinceGrounded, 1.5f), 0.8f); } if (sinceGrounded > 0.5f) { Land(sinceGrounded); } sinceGrounded = 0f; isGrounded = true; if (distance > distanceToGround || !hasRecievedTouchedGround) { distanceToGround = distance; } hasRecievedTouchedGround = true; moveMentData.SetSlope(normal); } private void Land(float landForce) { sinceLanded = 0f; } }