Relleno de huecos y generación de caramelos en Unity
Clase 20 de 31 • Curso de Desarrollo de Videojuegos para Móviles con Unity
Contenido del curso
- 5

Integración de Assets en Unity: Fondo de Escenario y Sprite Mapping
11:53 - 6

Colocación y Configuración de Sprites en Unity
12:06 - 7

Programación de Scripts para Caramelos en Videojuegos con Unity
10:57 - 8

Configuración y Gestión del Tablero en Unity con C#
10:09 - 9

Relleno de Tablero 2D con GameObjects en Unity
10:27 - 10

Recorte y edición de sprites en Unity para videojuegos
05:22 - 11

Creación y Configuración de Tablero en Unity para Videojuegos
08:22 - 12

Cambio de Cuadrados por Caramelos Aleatorios en C#
07:18
- 13

Evitar Tripletes en Candy Crush con Bucle Do While en Unity
12:33 - 14

Interacción Táctil en Unity: Selección y Movimiento de Objetos
12:14 - 15

Intercambio de Sprites en Unity para Juegos de Puzzle
10:17 - 16

Configuración de Física en Unity para Movimiento de Caramelos
13:30 - 17

Detección y Eliminación de Coincidencias en Candy Crush
12:06 - 18

Destrucción de Caramelos y Optimización en Juegos Móviles
15:26 - 19

Caída en Cascada de Caramelos en Juegos Match-3
13:23 - 20

Relleno de huecos y generación de caramelos en Unity
09:09 - 21

Optimización de Algoritmo de Alineación en Videojuegos tipo Match-3
10:55
- 22

Diseño de Interfaz Gráfica en Unity para Videojuegos
11:20 - 23

Programación de Interfaz Gráfica en Unity: Sistema de Puntos y Movimientos
07:31 - 24

Implementación de Singleton en Gestor de Interfaz de Usuario
08:13 - 25

Creación de Pantalla de Game Over en Videojuegos
06:55 - 26

Diseño de Niveles y Puntuación en Videojuegos de Puzle
04:46 - 27

Implementación de Efectos de Sonido en Videojuegos con C#
01:47 - 28

Animación y Destrucción de Caramelos en Videojuegos
02:00 - 29

Diseño de Menú Principal para Videojuegos Móviles
03:28
¿Cómo rellenar los huecos en el tablero con nuevos caramelos?
Cuando movemos caramelos en el tablero de juego, estos van descendiendo y dejan huecos en la parte superior. Para mantener el tablero lleno y funcional, necesitamos rellenar esos huecos con nuevos caramelos generados aleatoriamente. Este procedimiento se encarga de mantener el dinamismo y la complejidad del juego.
¿Cómo generar nuevos caramelos sin coincidencias inmediatas?
Para evitar coincidencias (matches) automáticas en filas o columnas al colocar un nuevo caramelo, es esencial seguir ciertas restricciones. Al generar nuevos caramelos:
- Declarar una lista de candidatos: Utilizamos todos los caramelos posibles del juego y los añadimos a una lista de candidatos (possible candies) para elegir.
- Remover caramelos coincidentes: Eliminamos de la lista aquellos caramelos que crearían matches, considerando sus posibles vecinos:
- Si hay un caramelo a la izquierda o a la derecha, eliminamos esos también de los candidatos.
- Revisamos la fila inferior para evitar un match vertical inmediato.
Implementamos este procedimiento con un método que devuelve un caramelo aleatorio viable:
private Sprite GetNewCandy(int x, int y) {
List<Sprite> possibleCandies = new List<Sprite>(originalPrefabs);
if (x > 0) {
possibleCandies.Remove(candies[x - 1, y].GetComponent<SpriteRenderer>().sprite);
}
if (x < xSize - 1) {
possibleCandies.Remove(candies[x + 1, y].GetComponent<SpriteRenderer>().sprite);
}
if (y > 0) {
possibleCandies.Remove(candies[x, y - 1].GetComponent<SpriteRenderer>().sprite);
}
return possibleCandies[Random.Range(0, possibleCandies.Count)];
}
¿Cómo integrar este método para mantener el tablero siempre lleno?
Una vez tenemos un método para obtener un nuevo caramelo, lo incorporamos al proceso de movimiento de caramelos determinando qué elementos se han de reemplazar. Cuando movemos un caramelo y se genera un hueco, en lugar de dejar la posición vacía o nula, invocamos a GetNewCandy para colocar un nuevo caramelo:
for (int i = y; i < ySize - 1; i++) {
candies[x, i] = candies[x, i + 1];
}
candies[x, ySize - 1] = GetNewCandy(x, ySize - 1);
¿Cuál es el impacto visual y funcional de esta solución?
Con cada jugada, los jugadores verán cómo los espacios vacíos se completan rápidamente con nuevos caramelos, manteniendo activo el flujo del juego. Con este procedimiento no solo se mantiene la jugabilidad, sino que se añade un nuevo desafío: las alineaciones resultantes de las caídas pueden generar nuevas jugadas automáticamente.
¿Qué más podemos mejorar en el algoritmo de juego?
En futuras iteraciones, nuestro objetivo principal será no solo rellenar el tablero, sino también optimizar el reconocimiento de nuevas alineaciones creadas por los movimientos automáticos de los caramelos resultantes de las caídas. Queremos asegurarnos de que el algoritmo detecte y actúe incluso sobre las alineaciones nuevas creadas por las alineaciones anteriores, promoviendo interacciones infinitas y desafiantes.
¡Esperamos que sigas con determinación y deseo de explorar más este mundo de programación de juegos!