La estructura de un juego para móvil
Desarrollo de un clon de Candy Crush con Unity para Android e iOS
Game Design Rápido para Prototipar Juegos en Unity
Repositorio del curso Unity para móviles
Creación de Juegos Móviles en Unity: Estructuración de Proyectos
Sprite Atlas y Generación de Caramelos
Integración de Assets en Unity: Fondo de Escenario y Sprite Mapping
Colocación y Configuración de Sprites en Unity
Programación de Scripts para Caramelos en Videojuegos con Unity
Configuración y Gestión del Tablero en Unity con C#
Relleno de Tablero 2D con GameObjects en Unity
Recorte y edición de sprites en Unity para videojuegos
Creación y Configuración de Tablero en Unity para Videojuegos
Cambio de Cuadrados por Caramelos Aleatorios en C#
Diseño de Game Play
Evitar Tripletes en Candy Crush con Bucle Do While en Unity
Interacción Táctil en Unity: Selección y Movimiento de Objetos
Intercambio de Sprites en Unity para Juegos de Puzzle
Configuración de Física en Unity para Movimiento de Caramelos
Detección y Eliminación de Coincidencias en Candy Crush
Destrucción de Caramelos y Optimización en Juegos Móviles
Caída en Cascada de Caramelos en Juegos Match-3
Relleno de huecos y generación de caramelos en Unity
Optimización de Algoritmo de Alineación en Videojuegos tipo Match-3
Retos finales
Diseño de Interfaz Gráfica en Unity para Videojuegos
Programación de Interfaz Gráfica en Unity: Sistema de Puntos y Movimientos
Implementación de Singleton en Gestor de Interfaz de Usuario
Creación de Pantalla de Game Over en Videojuegos
Diseño de Niveles y Puntuación en Videojuegos de Puzle
Implementación de Efectos de Sonido en Videojuegos con C#
Animación y Destrucción de Caramelos en Videojuegos
Diseño de Menú Principal para Videojuegos Móviles
Cierre del curso
Configuración y Exportación de Videojuegos a App Stores con Unity
Desarrollo de Juegos para Móviles con Unity y Android Studio
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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.
Para evitar coincidencias (matches) automáticas en filas o columnas al colocar un nuevo caramelo, es esencial seguir ciertas restricciones. Al generar nuevos caramelos:
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)];
}
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);
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.
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!
Aportes 6
Preguntas 0
No se si alguien más le pasaba, pero a mi cuando hacía 3 en línea en la primera fila, no me generaba los candies.
Coloque este if y funcionó
if(renderes.Count == 1)
{
renderes[0].sprite = GetNewCandy(x, ySize - 1);
}```
Es increible como le damos total contexto a la computadora de lo que esta pasando y como lo tiene que hacer
Al generar el nuevo caramelo también se debe asignar su correspondiente ID. Así que hice lo siguiente:
Aquí generaba el nuevo candy lo guardo en una variable y con esa variable llamo a mi función GetCandyId() que recibe un candy de tipo Sprite.
renderes[j].sprite = renderes[j+1].sprite;
Sprite newCandy = GetNewCandy(x,ySize-1);
renderes[j+1].sprite = newCandy;
candiesToFall[j].GetComponent<Candy>().id = renderes[j+1].GetComponent<Candy>().id;
candiesToFall[j+1].GetComponent<Candy>().id = GetCandyId(newCandy);
Función GetCandyId()
private int GetCandyId(Sprite candy){
int id = 0;
for (int i = 0; i < prefabs.Count; i++)
{
if(candy == prefabs[i]){
id = i;
}
}
return id;
}
EXELENTE
Genial
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?