/// <summary> /// Resets the AI to be ready for a new round /// </summary> public override void onRestart() { base.onRestart(); if (p != null && p.id == 1) { kalman = new Kalman(new Vector4(player.transform.position.x, 0, player.transform.position.y, 0), 1, 1); } else { kalman = new Kalman(new Vector4(player.transform.position.x, 0, player.transform.position.y, 0), 0.1, 0.1); } posHistory = new Vector2[60]; posHistoryIterator = 0; stateTimer = Time.time; IAState = (p != null && p.id == 0) ? SWIAState.RANDOM : SWIAState.DODGE_ATTACKS; IAAction = (p != null && p.id == 0) ? SWIAAction.MOVE_TURN_LEFT : SWIAAction.MOVE_FORWARD; actionNumber = 0; }
/// <summary> /// Determines an action and executes it when state is set to Dodge Attacks and there's nothing to dodge /// </summary> private void moveIntelligently() { if ((int)((Time.time - stateTimer) / (stateChangeTimer / actionsPerTimer)) >= actionNumber) // time to decide a new action { actionNumber++; int i = Random.Range(1, 4); switch (i) { case 1: { IAAction = SWIAAction.MOVE_FORWARD; } break; case 2: { IAAction = SWIAAction.MOVE_TURN_LEFT; } break; case 3: { IAAction = SWIAAction.MOVE_TURN_RIGHT; } break; } } switch (IAAction) { case SWIAAction.MOVE_FORWARD: { goForward(); } break; case SWIAAction.MOVE_TURN_LEFT: { goForward(); rotate(1); } break; case SWIAAction.MOVE_TURN_RIGHT: { goForward(); rotate(-1); } break; case SWIAAction.TURN_LEFT: { rotate(1); } break; case SWIAAction.TURN_RIGHT: { rotate(-1); } break; case SWIAAction.NOTHING: { // nothing } break; } }