Beispiel #1
0
 // Calculates info from player
 public void Update()
 {
     float [,] data = new float [num_enemies, INPUTLAYERS];
     for (int x = 0; x < num_enemies; x++)
     {
         float playerDistance = Vector2.Distance(enemies [x].character.transform.position, player.transform.position);
         if (enemies [x].character.dead)
         {
             playerDistance = playerDistance * 100000f;
             data [x, 0]    = (enemies [x].character.transform.position.x - player.transform.position.x) * 1000f;
             data [x, 1]    = (enemies [x].character.transform.position.y - player.transform.position.y) * 1000f;
         }
         else
         {
             data [x, 0] = enemies [x].character.transform.position.x - player.transform.position.x;
             data [x, 1] = enemies [x].character.transform.position.y - player.transform.position.y;
         }
         //playerDistance = Vector2.Distance (enemies [x].character.transform.position, player.transform.position);
         if (x < 3)
         {
             winners [x] = new WinnerDistance(playerDistance, x);
         }
         else if (playerDistance < winners [0].distance)
         {
             winners [2] = winners [1];
             winners [1] = winners [0];
             winners [0] = new WinnerDistance(playerDistance, x);
         }
         else if (playerDistance < winners [1].distance)
         {
             winners [2] = winners [1];
             winners [1] = new WinnerDistance(playerDistance, x);
         }
         else if (playerDistance < winners [2].distance)
         {
             winners [2] = new WinnerDistance(playerDistance, x);
         }
         data [x, 2]  = enemies [x].character.velocity.x;
         data [x, 3]  = enemies [x].character.velocity.y;
         data [x, 4]  = player.velocity.x;
         data [x, 5]  = player.velocity.y;
         data [x, 6]  = enemies [x].character.transform.position.x;
         data [x, 7]  = enemies [x].character.transform.position.y;
         data [x, 8]  = enemies [x].character.timeSinceLastJump;
         data [x, 9]  = enemies [x].character.grounded ? 1f : 0f;
         data [x, 10] = Mathf.NegativeInfinity;
         for (int y = 0; y < 100; y++)
         {
             if (x != y)
             {
                 float neighborDistance = Vector2.Distance(enemies [x].character.transform.position, enemies [y].character.transform.position);
                 if (neighborDistance > data [x, 10])
                 {
                     data [x, 10] = neighborDistance;
                 }
             }
         }
     }
     UpdateControllers(GetMoves(data));
 }
Beispiel #2
0
 private void ResetWinners()
 {
     for (int x = 0; x < winners.Length; x++)
     {
         winners [x] = new WinnerDistance(Mathf.Infinity, x);
     }
 }