Problem detecting ground with collision flags and controller.move (vector3.down)

I am using a character controller and after the character controller double jumps if you press jump a third time he does an “air smash.” Kind of mario style. If the ground is visible it works fine. But if I can’t see the ground below the character he will perform the air smash but will not detect a collision when he hits the ground and therefore goes right through the ground… I’m stuck trying to figure out why. My script is very long so here is the bits pertaining to what I’m trying to accomplish.

if (!airSmashing) {
    collisionFlags = controller.Move (direction * speed + Vector3 (0, verticalSpeed, 0) + inAirVelocity;);
    }

if (airSmashing) {
    canControl = false;
    controller.Move (Vector3.down* 100 * Time.deltaTime);
    if (controller.isGrounded) {
    airSmashing = false;
    canControl = true;
    }
    }

Any suggestions?

Alright, so I solved the problem. The issue the character controller was having was not being able to detect a collision based on other aspects of my script. I’m still somewhat shaky on this. BUT, I did get an air smash to work. Not as smooth as mario yet but I’m sure this will definately help others trying to do the same thing. Enjoy: (put this in your update function:

if (airSmashing) {
canControl = false; // disable any controls for the player
controller.Move (Vector3.down * 10000 * Time.deltaTime);
if (CollisionFlags.CollidedBelow) {
airSmashing = false;
canControl = true;
controller.Move (//whatever your normal move code is);
}