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)); } }
public override void Init(AIStateController controller) { if (controller.GetRigidbody() == null) { throw new AIException("Rigidbody component in AIStateController: " + controller + " is neccessary"); } InitCurStopTime(); InitCurTimeBeforeChangeDirection(); Resume(controller); }