// 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)); }
private void ResetWinners() { for (int x = 0; x < winners.Length; x++) { winners [x] = new WinnerDistance(Mathf.Infinity, x); } }