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 ResetCurTimeBeforeChangeDirection(AIStateController controller) { controller.SetFloat(CUR_TIME_BEFORE_DIR_CHANGE_KEY, UnityEngine.Random.Range(minTimeBeforeDirectionChange, maxTimeBeforeDirectionChange)); }
private void ResetCurStopTime(AIStateController controller) { controller.SetFloat(CUR_STOP_TIME_KEY, UnityEngine.Random.Range(minStopTime, maxStopTime)); }
private void ResetTimer(AIStateController controller) { controller.SetFloat(TIMER_KEY, 0f); controller.SetFloat(STOP_TIMER_KEY, 0f); }
private void Collide(AIStateController controller) { controller.SetFloat(TIMER_KEY, controller.getFloat(CUR_TIME_BEFORE_DIR_CHANGE_KEY)); }