No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Configurar el manager de dulces

11/31
Recursos

Para juntar los elementos gr谩ficos de nuestro videojuego (el fondo, los caramelos y la grilla) con el script que llamamos Board Manager debemos crear un Game Object vac铆o, sin nada visual, que invoque al script y le permita controlar los elementos del proyecto.

Para esto, debemos crear un Game Object vac铆o con la opci贸n Create Empty y a帽adir una etiqueta con colores para localizarlos m谩s f谩cilmente a pesar de ser invisibles.

Aportes 6

Preguntas 1

Ordenar por:

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

Para quien pueda interesar, a mi me gusta mas que tenga al menos un poquito de separacion entre celdas de frutas, para ello cree dos variables a las que llame padding (no se mucho de web, pero creo que era el termino) una para X y otra para Y, se las adicione al Vector2 del offset y este fue mi resultado:

control + shift + n = crear un objeto vaci贸 en 鈥淗ierachy鈥

Las etiquetas nos ayudan a encontrar m谩s f谩cilmente los Game Objects sin contenido visual 馃憤.

Yo tengo un problema no s茅 qu茅 sea alguien que me pueda ayudar por favor?

Genial

hola me sale lo siguiente
IndexOutOfRangeException: Index was outside the bounds of the array.
BoardManager.CreateInitialBoard (UnityEngine.Vector2 offset) (at Assets/Scripts/BoardManager.cs:68)
BoardManager.Start () (at Assets/Scripts/BoardManager.cs:31)
pero voy a las l铆neas y no veo el error.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BoardManager : MonoBehaviour
{//creamos 1 singleton solo puede esta instanciado 1 vez 
    public static BoardManager sharedInstance;
    public List<Sprite> prefabs = new List<Sprite>();
    public GameObject currentCandy; //caramelo actual
    public int xSize, ySize;

    private GameObject[,] candies; //matriz de caramelo

    public bool isShifting { get; set; }//se esta intercambiando caramelos

    private Candy selectedCandy;

    // Start is called before the first frame update
    void Start()
    {//si es null inicializamos tecnica del singleton
        if (sharedInstance == null)
        {
            sharedInstance = this;
        }
        else
        {
            Destroy(gameObject);
        }

        Vector2 offset = currentCandy.GetComponent<BoxCollider2D>().size;
        CreateInitialBoard(offset);
    }

    //crear tablero inicial
    private void CreateInitialBoard(Vector2 offset)
    {
        candies = new GameObject[xSize, ySize];

        float startX = this.transform.position.x;
        float startY = this.transform.position.y;
        int idx= -1;
        
        //creamos bucle anidado
        for(int x = 0; x < xSize; x++)
        {
            for(int y = 0; x < ySize; y++)
            {//con esto inicialiso la variable x e y
                GameObject newCandy = Instantiate(currentCandy,
                    new Vector3(startX + (offset.x*x),
                    startY +(offset.y*y),
                    0),
                    currentCandy.transform.rotation);//rotacion
                //lo siguiente es poner el nombre del candy
                newCandy.name = string.Format("Candy[{0}] [{1}]", x, y);

                //creo 1 bucle si el valor actual se corresponde  con la pos de arriba y abajo
                do {//ejecuta la variable idx  como numero aliatorio
                    idx = Random.Range(0, prefabs.Count);
                } while((x>0 &&idx == candies[x-1,y].GetComponent<Candy>().id) ||
                        (y>0 &&idx == candies [x, y-1].GetComponent<Candy>().id));

                
                Sprite sprite = prefabs[idx]; //obtenemos el numero aleatorio  entre 0 y 5
                newCandy.GetComponent<SpriteRenderer>().sprite = sprite;//invoco al getcomponet y cambiamos el sprite por el new Sprite
                newCandy.GetComponent<Candy>().id = idx;

                newCandy.transform.parent = this.transform;//padre del caramelo
                candies[x, y] = newCandy;//crear nuevo caramelo

                
            }
        }
    }

    // Update is called once per frame
    void Update()
    {
        
    }

}