/// <summary> /// Ayuda visual para movimiento del jugador /// </summary> public void movement() { Vector3Int currentPosition = tilemap.WorldToCell(currentChar.transform.position); move = currentChar.getMoveArea(currentPosition); BoundsInt.PositionEnumerator tiles = move.allPositionsWithin; tiles = tiles.GetEnumerator(); while (tiles.MoveNext()) { if (availableTile(tiles.Current) && (tiles.Current.x - currentPosition.x == 0 || tiles.Current.y - currentPosition.y == 0)) { tilemap.RemoveTileFlags(tiles.Current, TileFlags.LockColor); tilemap.SetColor(tiles.Current, new Color(0, 0, 1, 0.8f)); } } }
/// <summary> /// Ayuda visual para el ataque /// </summary> public void attack() { Vector3Int currentPosition = tilemap.WorldToCell(currentChar.transform.position); attackArea = currentChar.getMoveArea(currentPosition); BoundsInt.PositionEnumerator tiles = attackArea.allPositionsWithin; tiles = tiles.GetEnumerator(); while (tiles.MoveNext()) { if (!currentPosition.Equals(tiles.Current)) { tilemap.RemoveTileFlags(tiles.Current, TileFlags.LockColor); tilemap.SetColor(tiles.Current, new Color(1, 0, 0, 0.8f)); } } }
/// <summary> /// Metodo para eliminar toda ayuda visual /// </summary> public void clearVisualHelp() { BoundsInt.PositionEnumerator tiles = new BoundsInt.PositionEnumerator(); switch (currentChar.getState()) { case StateManager.move: tiles = move.allPositionsWithin; break; case StateManager.attack: tiles = attackArea.allPositionsWithin; break; } tiles = tiles.GetEnumerator(); while (tiles.MoveNext()) { tilemap.SetColor(tiles.Current, defaultTileColor); } }
/// <summary> /// Metodo para colocar los triggers de sala en las entradas de una sala /// </summary> /// <param name="tile"></param> /// <param name="tilemap"></param> public void setTriggers(GameObject tile, ref Tilemap tilemap) { GameObject clon = tile; for (int i = 0; i < sides.Length; ++i) { //si el lado tiene camino se comprueba donde colocar el trigger if (sides[i]) { BoundsInt wall = getTriggerPosition(i); BoundsInt.PositionEnumerator iterator = wall.allPositionsWithin; iterator = iterator.GetEnumerator(); while (iterator.MoveNext()) { if (tilemap.GetTile(iterator.Current) != null && tilemap.GetTile(iterator.Current).name.Contains("Floor")) { clon.transform.position = tilemap.GetCellCenterWorld(iterator.Current); GameObject.Instantiate(clon); } } } } }