private void CheckGround() { bool groundedResult = false; DistancetoGround = 0f; if (isGrounded) { groundedResult = Physics.Raycast(Origin.position + Offset, Vector3.down, out m_Hit, MaxDistanceToGround); } else { groundedResult = Physics.Raycast(Origin.position + Offset, Vector3.down, out m_Hit, MaxDistanceToGround + InAirDistanceExtension); } Angle = Vector3.Angle(m_Hit.normal, transform.forward) - 90; if (isGrounded != groundedResult) { OnGroundedChange?.Invoke(groundedResult); } _isGrounded = groundedResult; if (_isGrounded) { DistancetoGround = (Origin.position.y - m_Hit.point.y); if (DistancetoGround < 0) { DistancetoGround = 0f; } } }
private void HasGroundUpdated() { _Mover.CheckForGround(); var result = _Mover.IsGrounded(); if (_isGrounded != result) { OnGroundedChange?.Invoke(result); _isGrounded = result; } }