In editor speeds are different than when the game is compiled. Enemies sometimes walk through walls and fall through the floor. The floors and walls are box colliders with no other code. The enemies only have this code and character controller.
CharacterController c = GetComponent<CharacterController>();
moveDirection = new Vector3(10,0,0);
moveDirection = transform.TransformDirection(moveDirection);
if (gravity < 10000) { gravity += 1000*Time.deltaTime; }
moveDirection.y -= gravity*Time.deltaTime;
c.Move(moveDirection*Time.deltaTime);