public override void UpdateAction(AIStateController controller)
    {
        controller.SetFloat(TIMER_KEY, controller.getFloat(TIMER_KEY) + Time.deltaTime);

        if (controller.getFloat(TIMER_KEY) >= controller.getFloat(CUR_TIME_BEFORE_DIR_CHANGE_KEY))
        {
            controller.SetFloat(STOP_TIMER_KEY, controller.getFloat(STOP_TIMER_KEY) + Time.deltaTime);

            if (controller.getFloat(STOP_TIMER_KEY) >= controller.getFloat(CUR_STOP_TIME_KEY))
            {
                Resume(controller);
            }
        }
        else
        {
            DiscreteMovement.MoveDiscrete(controller.GetRigidbody(), GetCurMovingDirection(controller), speed);
            DiscreteMovement.RotateDiscrete(controller.GetRigidbody(), GetCurMovingDirection(controller));
        }
    }
 private void Collide(AIStateController controller)
 {
     controller.SetFloat(TIMER_KEY, controller.getFloat(CUR_TIME_BEFORE_DIR_CHANGE_KEY));
 }