Relleno de Tablero 2D con GameObjects en Unity
Clase 9 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 inicializamos un tablero en un juego 2D utilizando C#?
En el desarrollo de videojuegos, la creación e inicialización de un tablero es una tarea fundamental. Aquí te guiaré paso a paso para entender cómo lograrlo de manera eficiente y lógica, usando el lenguaje de programación C# como base.
¿Qué hay que hacer primero?
Todo comienza con la declaración del método createInitialBoard, encargado de inicializar la matriz 2D que representará nuestro tablero, con la ayuda de un GameObject. Para ello, necesitaremos determinar el número de filas y columnas que tendrá nuestro tablero. Estos valores vienen dados por las variables xSize y ySize respectivamente.
El primer paso es crear una matriz de GameObjects de tamaño xSize por ySize:
candies = new GameObject[xSize, ySize];
Este arreglo bidimensional almacenará nuestros caramelos en el tablero.
¿Cómo determinamos las coordenadas de inicio?
Para determinar dónde comenzará nuestro tablero en el espacio, se utilizan las coordenadas del BoardManager, de tal manera que podremos posicionarlo donde queramos en la escena. Utilizamos dos variables para almacenar estas coordenadas iniciales:
float startX = this.transform.position.x;
float startY = this.transform.position.y;
¿Cómo rellenamos el tablero?
Para llenar el tablero, anidamos dos bucles for, uno recorriendo las columnas y otro las filas:
for (int x = 0; x < xSize; x++) {
for (int y = 0; y < ySize; y++) {
...
}
}
Dentro del segundo bucle realizamos la instancia de cada caramelo. Usamos la función instantiate para crear nuevos GameObjects en las posiciones calculadas:
GameObject newCandy = Instantiate(currentCandy, new Vector3(startX + offset.x * x, startY + offset.y * y, 0), currentCandy.transform.rotation);
Aquí, offset es crucial ya que determina la separación entre cada caramelo. Multiplicar offset.x por x y offset.y por y permite ajustar cada caramelo en su posición correcta.
¿Cómo nombramos y almacenamos cada caramelo?
Nombrar claramente los objetos instanciados y almacenarlos en el arreglo facilita identificar y depurar el código en el futuro:
newCandy.name = string.Format("Candy[{0},{1}]", x, y);
candies[x, y] = newCandy;
Esto nos da un control visual y estructural del tablero, asegurando que cada caramelo esté exactamente donde debería estar.
¿Por qué usar Vector3 en un juego 2D?
Aunque trabajamos en un entorno visual 2D, el motor Unity opera en un espacio 3D, lo que requiere usar Vector3 al instanciar objetos. Simplemente establecemos la coordenada z como 0 para mantener la apariencia 2D:
new Vector3(x, y, 0)
Este método bien estructurado proporciona una base sólida para desarrollar juegos que requieren un tablero, como puzzles o juegos de estrategias, facilitando una inicialización precisa y organizada del mismo. Con este fundamento, el siguiente paso será ver cómo la teoría se transforma en una visualización clara y efectiva en pantalla.