No tienes acceso a esta clase

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

Añadir caramelos de forma aleatoria

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 8

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

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

Genial

Mi solucion

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