void Start()
 {
     xzMoveState = XZ_MOVE_STATE.NONE;
     yMoveState = Y_MOVE_STATE.NONE;
 }
    //-----------------------------------------------------------------------------------
    //-----------------------------------------------------------------------------------
    private void intentXZDir(Vector3 dir)
    {
        bool isZeroDir = dir.x == 0 && dir.z == 0;

        switch (xzMoveState) {
        case XZ_MOVE_STATE.NONE:
            if(!isZeroDir)
            {
                xzMoveState = XZ_MOVE_STATE.WALK;
            }

            break;
        case XZ_MOVE_STATE.RUN:

            if(isZeroDir)
            {
                xzMoveState = XZ_MOVE_STATE.NONE;
            }

            break;
        case XZ_MOVE_STATE.WALK:

            if(isZeroDir)
            {
                xzMoveState = XZ_MOVE_STATE.NONE;
            }

            break;
        }

        if (!isZeroDir) {

            xspeed = dir.x * WALK_SPEED;
            zspeed = dir.z * WALK_SPEED;

            //body turn to neck dir,then neck turn back
            trans.LookAt (trans.position + neckTrans.forward);
            neckTrans.localRotation = Quaternion.identity;
        }else
        {
            xspeed = 0;
            zspeed = 0;
        }
    }