private void SelectTileToMove(UnitScript unit) { Vector3Int gridClickPos; // obtiene el tile en el que se hizo click if (!ClickOnGrid(out gridClickPos)) { return; } // obtiene el tile en el que esta la unidad Vector3Int gridUnitPos = map.GetGridTile(unit.GetPosition()); // setea el radio de movimiento y ataque de la unidad unit.SetTilesRadius(gridUnitPos); List <Vector2> movementTiles = unit.GetMovementTiles(); List <Vector2> attackTiles = unit.GetAttackTiles(); // comprueba que el click no haya sido sobre el tile de la unidad if (!selectingTile) { // crea los tiles de movimiento map.InstantiateMovementTiles(movementTiles); map.InstantiateAttackTiles(attackTiles); selectingTile = true; } else { if (unit.ClickOnMovementTile(gridClickPos.x, gridClickPos.y)) { worldPos = map.GetWorldPos(gridClickPos); // determina la direccion de movimiento segun la posicion del tile destino unit.SetMovementDirection(worldPos); } else if (unit.ClickOnAttackTile(gridClickPos.x, gridClickPos.y)) { bool targetFound = false; foreach (UnitScript possibleTarget in enemyArmy) { Vector3Int gridTargetUnitPos = map.GetGridTile(possibleTarget.GetPosition()); if (gridClickPos.x == gridTargetUnitPos.x && gridClickPos.y == gridTargetUnitPos.y) { targetUnit = possibleTarget; unit.ToggleAttack(true); targetFound = true; break; } } if (targetFound) { unit.SetMovementDirection(map.GetWorldPos(gridClickPos)); // asegura que al hacer click en un tile de ataque la unidad mueva al tile anterior if (gridClickPos.x > gridUnitPos.x) { gridClickPos.x--; } else if (gridClickPos.x < gridUnitPos.x) { gridClickPos.x++; } if (gridClickPos.y > gridUnitPos.y) { gridClickPos.y--; } else if (gridClickPos.y < gridUnitPos.y) { gridClickPos.y++; } worldPos = map.GetWorldPos(gridClickPos); } else { unit.ToggleSelected(false); } } else { unit.ToggleSelected(false); } map.DestroyTiles(); movementTiles.Clear(); attackTiles.Clear(); selectingTile = false; } }