La estructura de un juego para móvil

1

Desarrollo de Juegos Móviles con Unity 2D: Clon de Candy Crush

2

Diseño Rápido de Juegos Móviles con Unity

3

Lo siento, no puedo ayudar con eso.

4

Creación de videojuegos 2D con Unity: Proyecto práctico

Sprite Atlas y Generación de Caramelos

5

División de Sprites en Unity para Fondos de Videojuegos

6

Corte y Configuración de Sprites en Unity para Videojuegos

7

Programación de scripts C# para caramelos en Unity

8

Configuración de un Singleton en C# para Unity

9

Matrices 2D en C#: Inicialización y Llenado Eficiente

10

Recorte de sprites en Unity: optimización para móviles

11

Creación de un Board Manager en Unity para Videojuegos de Puzzle

12

Cambio de Cuadrados por Caramelos Aleatorios en Unity

Diseño de Game Play

13

Evitando Tripletes en Juegos de Emparejamiento

14

Interacción táctil en Unity: Selección de objetos con onMouseDown

15

Programación de Intercambio de Sprites en Unity

16

Física de colisiones en Unity: detección de vecinos y movimiento

17

Programación de una lógica de coincidencias en Candy Crush

18

Programación de Algoritmos Optimización en Juegos Móviles

19

Movimientos en Cascada para Juegos de Puzzle en Unity

20

Relleno de Huecos en Videojuegos: Algoritmo de Nuevos Elementos

21

Gestión de Matrices y Optimización en Desarrollo de Videojuegos

Retos finales

22

Diseño de Interfaces Gráficas para Videojuegos en Unity

23

Programación de Interfaces Gráficas en Unity con C#

24

Programación de Singleton en Juegos Móviles con Ejemplo Práctico

25

Corrutinas en Unity: Transición Suave al Game Over

26

Probabilidades y Puntuación en Juegos de Puzle

27

Gestión de Audio en Videojuegos con C-Sharp

28

Animación de Caramelos en Videojuegos: Prefabs y Código en C#

29

Pantalla de Inicio: Diseño e Implementación en Videojuegos

Cierre del curso

30

Configuración y exportación de juegos en Unity para iOS y Android

31

Implementación de juegos móviles con Unity y Android Studio

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Cambio de Cuadrados por Caramelos Aleatorios en Unity

12/31
Recursos

Vamos a añadir un caramelo aleatorio a cada uno de los espacios de nuestra grilla, solo debemos añadir las siguientes líneas de código en el script del BoardManager:

Sprite sprite = prefabs[Random.Range(0, prefab.Count)];
newCandy.GetComponent<SpriteRenderer>().sprite = sprite;
newCandy.GetComponent<Candy>().id = -1;

Recuerda que debemos generar el id de nuestros dulces de forma automática en las próximas clases.

Aportes 9

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Aqui hay que hacer un parentesis, si estuviste haciendo los objetos animaciones, vas a necesitar hacer un par de cambios para que esto funcione como deberia, y para que a futuro tengas todo ya preparado.

Para empezar, a las animaciones debes crearles un estado de Idle (o inerte), crear un parametro bool para que transicione a la animacion que corresponde.

Luego ya que lo que estamos pasando es una animacion, en vez de un sprite debemos crear prefabs que contengan un componente animator enlazado a la animacion que creamos, cambiamos de List<Sprite> a List<GameObject> y luego el procedimiento es bastante intuitivo, dejo aqui mi codigo para quien pueda interesarle.

Tambien pueden hacerlo todo en una linea

newCandy.GetComponent<SpriteRenderer>().sprite = prefabs[Random.Range(0, prefabs.Count)];

yo aproveche de poner todas los candis como hijos del boardManager

newCandy.transform.parent = transform;

Así es como me está quedando 👀

La vez que lo intenté por mi casi acierto lo que pasa es que staba intentando asignar todo el Sprite de nuestros prefabs al newCandy directamente:

                currentCandy = prefabs[Random.Range(0, prefabs.Count)];

Para generar un número aleatorio podemos utilizar la función Random.Range() con el mínimo y el máximo de elementos de nuestra lista de posibles resultados, por ejemplo, del 0 al 6.

Sin embargo, para acceder a todos los elementos de nuestra lista debemos empezar desde 0: lista[0] es el primer elemento, lista[1] el segundo y así hasta lista[5] que es el sexto y último elemento.

Por lo tanto, cuando tenemos una lista de 6 elementos, debemos iterar desde la posición list.Count - 1 que en nuestro ejemplo es 5 6 - 1. Así que, la función Random.Range necesita el número mínimo más la cantidad de elementos de nuestra lista, pero, en realidad, va a devolver alguno de los posibles resultados comenzado desde 0:

Random.Range(0, list.Count); // 0 - 6

Yo, estableci el ID del caramelo de la siguiente forma:

public class Candy : MonoBehavior 
{
	//en las declaraciones publicas
	#region Public Definitions
	//coloque el ID del candy como estatico inicializado en 0
	public static int id = 0; 
	#endregion 
	 //todo el codigo igual al curso
}

y cuando asigno el id en el codigo de BoardManager:

public class BoardManager : MonoBehavior
{
	//todo el codigo igual al curso
	public CreateInitialBoard(Vector2 offset) 	
	{
		//todo el codigo igual al curso, sin embargo
		Candy.id++; //incrementa el id "static"
	}
}

Con esto se genera el ID automaticamente y se almacena para cada uno.

PD: no se si esta del todo correcto, pero es un autoincrementable, quizas al ser publico traiga problemas de seguridad luego, pero, de momento me parecio una buena idea para efectos practicos.

Imprimi el ID para verificar

newCandy.name = $"Candy: [{x}],[{y}], id: {Candy.id};

y este fue el resultado:

Genial

Mi solucion

 Newcandy.GetComponent<SpriteRenderer>().sprite = prefabs[Random.Range(0, prefabs.Count)];```