private void Update() { if (dead) { return; } // Check Ground RaycastHit hitInfo; if (groundgracetimer <= 0 && Physics.Raycast(transform.position, Vector3.down, out hitInfo, GROUNDCHECKDIST, ~LayerMask.NameToLayer("Terrain"))) { grounded = true; } else { groundgracetimer--; grounded = false; } // State implementation var newState = state.HandleTransition(this); if (newState != null) { state.OnExit(this); state = newState; actions = state.OnEnter(this); } state.HandleUpdate(this); }