nlbi21

MapGenerator - Unity - Grid Pathfiding (Español)

Dec 9th, 2016
92
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Map : MonoBehaviour {
  6.  
  7.         // Inicialización de la clase TipoTile.
  8.         public TipoTile[] tipoTiles;
  9.  
  10.         // Variable del GameObject de la unidad seleccionada.
  11.         public GameObject unidadSeleccionada;
  12.  
  13.         // Inicialización de una variable array bidimensional para guardar las coordenadas.
  14.         int[,] tiles;
  15.  
  16.         // Tamaño del mapa en X y Y.
  17.         public int mapSizeX = 5;
  18.         public int mapSizeY = 5;
  19.  
  20.         // Variación de offset
  21.         public float offset = 3f;
  22.  
  23.         // Función para hacer al iniciar la escena.
  24.         void Start(){
  25.                 //Asignamos la unidad seleccionada al player por el tag "Player".
  26.                 unidadSeleccionada = GameObject.FindGameObjectWithTag("Player");
  27.  
  28.                 // Asignación de valores para el array de tiles.
  29.                 tiles = new int[mapSizeX,mapSizeY];
  30.  
  31.                 // For para asignar a cada nodo un tipo de tile.
  32.                 for(int x = 0; x < mapSizeX; x++){
  33.                         for(int y = 0; y < mapSizeY; y++){
  34.                                 tiles[x,y] = 0;
  35.                         }
  36.                 }
  37.  
  38.                 GenerarTiles();
  39.         }
  40.  
  41.         // Función para generar los tiles del mapa.
  42.         void GenerarTiles() {
  43.                 // For para recorrer cada tile y crearlo.
  44.                 for(int x = 0; x < mapSizeX; x++){
  45.                         for(int y = 0; y < mapSizeY; y++){
  46.  
  47.                                 // Asignación de todas las propiedades del tipo de tile.
  48.                                 TipoTile tt = tipoTiles[ tiles[x,y] ];
  49.  
  50.                                 // Creación del GameObject (tile) con sus propiedades.
  51.                                 GameObject tileGO = Instantiate(tt.prefabVisualTile as GameObject, new Vector3(x*offset,0,y*offset), Quaternion.identity);
  52.                                 // Cambio de nombre del GameObject (tile) al nombre de la coordenada actual.
  53.                                 tileGO.name = "(" + x + "," + y + ") - ["+ tt.nombre+"]";
  54.                                 // Se mueve el GameObjetc o actual tile como hijo a el GameObject Map (Este contendra todos los tiles).
  55.                                 tileGO.transform.parent = this.transform;
  56.  
  57.                                 // Obtenemos el script TileClickeable del tile actual.
  58.                                 TileClickeable tc = tileGO.GetComponent<TileClickeable>();
  59.                                 // Asignamos los valores de (x,y) del acutal tile.
  60.                                 tc.tileX = (int)(x*offset);
  61.                                 tc.tileY = (int)(y*offset);
  62.                                 // Asignamos el contenedor del mapa a los tiles.
  63.                                 tc.map = this;
  64.  
  65.                         }
  66.                 }
  67.         }
  68.  
  69.         // Función en la que obtenemos las coordenadas para mover la unidad seleccionada.
  70.         public void MoverUnidadSeleccionadaA(int x, int y){
  71.                 // Movemos la unidad seleccionada al punto del tile clickeado.
  72.                 unidadSeleccionada.transform.position = new Vector3(x, 0, y);
  73.         }
  74. }
RAW Paste Data