Esempio n. 1
0
 /// <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;
 }
Esempio n. 2
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;
        }
    }