private void FixedUpdate() { if (mStunLeft > 0f && mStunLeft - Time.fixedDeltaTime < 0f) { animController.SetShocked(false); } mStunLeft -= Time.fixedDeltaTime; bool wasGrounded = m_Grounded; m_Grounded = false; // The player is grounded if a circlecast to the groundcheck position hits anything designated as ground // This can be done using layers instead but Sample Assets will not overwrite your project settings. Collider2D[] colliders = Physics2D.OverlapCircleAll(m_GroundCheck.position, k_GroundedRadius, m_WhatIsGround); for (int i = 0; i < colliders.Length; i++) { if (colliders[i].gameObject != gameObject) { m_Grounded = true; if (!wasGrounded) { OnLandEvent.Invoke(); animController.Land(); LandSound.Play(); } } } }