Charactercontroller won't go down, only goes up

Hey i have a player with a charactercontroller and an easy movementscript to walk. (player don’t need to jump or something like that).
but if it walk over a little blok. my player moves up. and is kind of flying above the ground.
if go up a stair he keeps flying at that level. but my player won’t go down.

sorry for my bad english .
thanks for reading

(this is my movementscript)

  public float MoveSpeed = 100f;
  public bool attacking=false;
  public bool IsWalking;
  public CharacterController controller;
  Vector3 lastPos; 

  void Start()
  {
    lastPos = transform.position;
  }

  void Update()
  {
   if (GameObject.Find("Cha_Knight").GetComponent<PlayerHealth>().currentHealth > 0)
    {
      Vector3 curPos = transform.position;


      if (Input.GetKey("z"))
      {
        controller.Move(Vector3.forward * MoveSpeed * Time.deltaTime);
        animation.CrossFade("Walk");
        transform.forward = new Vector3(0, 0f, 1f);
        IsWalking = true;

        if (lastPos == curPos)
        {
          IsWalking = false;
        }



      }





      else if (Input.GetKey("s"))
      {
        controller.Move(-Vector3.forward * MoveSpeed * Time.deltaTime);
        transform.forward = new Vector3(0, 0f, -1f);
        animation.Play("Walk");
        IsWalking = true;

        if (lastPos == curPos)
        {
          IsWalking = false;
        }

      }



      else if (Input.GetKey("q"))
      {
        controller.Move(-Vector3.right * MoveSpeed * Time.deltaTime);
        transform.forward = new Vector3(-1f, 0f, 0);
        animation.CrossFade("Walk");
        IsWalking = true;
        if (lastPos == curPos)
        {
          IsWalking = false;
        }


      }



      else if (Input.GetKey("d"))
      {

        controller.Move(Vector3.right * MoveSpeed * Time.deltaTime);
        transform.forward = new Vector3(1f, 0f, 0);
        animation.CrossFade("Walk");
        IsWalking = true;

        if (lastPos == curPos)
        {
          IsWalking = false;
        }


      }


      else
      {
        IsWalking = false;
      }



      //animation.CrossFade("Wait");

      lastPos = curPos;




    }


  }

In order to make your player touch the ground, you need to apply gravity.

You have two ways of doing it : either apply it manually, or use controller.SimpleMove() instead of Move().