{"id":74000,"date":"2025-11-28T20:30:06","date_gmt":"2025-11-29T01:30:06","guid":{"rendered":"https:\/\/niixer.com\/?p=74000"},"modified":"2026-01-09T11:48:57","modified_gmt":"2026-01-09T16:48:57","slug":"astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego","status":"publish","type":"post","link":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/","title":{"rendered":"AstraCore Espace: Unity juegoAstraCore Espace: Todo el Proceso de Creaci\u00f3n (Unity)AstraCore Espace: Unity juego"},"content":{"rendered":"\n<p>AstraCore Escape es un proyecto desarrollado con Unity que combina exploraci\u00f3n, parkour y mec\u00e1nicas de minijuego dentro de un entorno futurista. Este documento presenta el paso a paso del proceso de creaci\u00f3n, desde los primeros elementos visuales hasta la integraci\u00f3n de inteligencia artificial y la construcci\u00f3n de un minijuego interno.<\/p>\n\n\n\n<p>El objetivo es mostrar el flujo completo de desarrollo, incluyendo decisiones t\u00e9cnicas, herramientas utilizadas y la evoluci\u00f3n de los sistemas principales. Este documento sirve tanto como gu\u00eda para futuros desarrollos como registro del proceso creativo y t\u00e9cnico detr\u00e1s de AstraCore Escape.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n de la Interfaz (UI \/ Canvas)<\/h2>\n\n\n\n<p><strong>Subimos la imagen que queremos usar como fondo del men\u00fa. Una vez importada, cambiamos su configuraci\u00f3n inicial:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Texture Type:<\/strong> <em>Sprite (2D and UI)<\/em><\/li>\n\n\n\n<li><strong>Sprite Mode:<\/strong> <em>Single<\/em><\/li>\n<\/ul>\n\n\n\n<p>Esto permite que Unity reconozca la imagen como un sprite adecuado para interfaces y pueda utilizarse correctamente dentro del Canvas.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"446\" height=\"608\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen1.png\" alt=\"\" class=\"wp-image-74001\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen1.png 446w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen1-220x300.png 220w\" sizes=\"auto, (max-width: 446px) 100vw, 446px\" \/><\/figure>\n\n\n\n<p>Para agregar el Canvas, nos dirigimos a:<br>GameObject \u2192 UI \u2192 Canvas<\/p>\n\n\n\n<p>Esto crea autom\u00e1ticamente un Canvas en la escena, junto con un EventSystem necesario para manejar interacciones en la interfaz.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"571\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen2.png\" alt=\"\" class=\"wp-image-74002\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen2.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen2-300x291.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p><strong>Una vez agregado el Canvas, a\u00f1adimos un Panel.<\/strong><br>Para esto, hacemos clic derecho sobre el <em>Canvas<\/em> \u2192 <strong>UI \u2192 Panel<\/strong>.<br>El Panel servir\u00e1 como contenedor para los elementos visuales de nuestro men\u00fa.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"769\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen3.png\" alt=\"\" class=\"wp-image-74003\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen3.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen3-230x300.png 230w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p><strong>Para agregar los botones<\/strong>, seleccionamos el panel que creamos y, sobre \u00e9l, hacemos clic derecho \u2192 <strong>UI \u2192 Button (TextMeshPro)<\/strong>.<br>De esta forma a\u00f1adimos un bot\u00f3n con texto editable mediante TextMeshPro<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"831\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen4.png\" alt=\"\" class=\"wp-image-74004\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen4.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen4-213x300.png 213w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Unity incluye algunas fuentes por defecto, sin embargo, si necesitamos usar una tipograf\u00eda diferente, podemos descargarla externamente y luego importarla a Unity como cualquier otro archivo (arrastr\u00e1ndola a la carpeta del proyecto). Una vez importada, la podemos asignar a los textos de TextMeshPro o a cualquier elemento UI que la requiera.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"143\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen5.png\" alt=\"\" class=\"wp-image-74005\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen5.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen5-300x73.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Una vez aqu\u00ed vamos a posicionarnos encima de las letras y con clic derecho Create \u2192 TextMeshPro \u2192 Font Asset<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"316\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen6.png\" alt=\"\" class=\"wp-image-74006\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen6.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen6-300x161.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Ya con esto podemos modificar nuestros textos a nuestro gusto como se ve en la imagen a continuaci\u00f3n<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"280\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen7.png\" alt=\"\" class=\"wp-image-74007\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen7.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen7-300x143.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Ahora para modificar el bot\u00f3n vamos a seleccionar el bot\u00f3n y abriendo el bot\u00f3n ahora estar\u00e1 texto, ah\u00ed vamos a escribir lo que queremos que diga y modificarlo seg\u00fan nuestras necesidades<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"343\" height=\"201\" data-id=\"74011\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen8-1.png\" alt=\"\" class=\"wp-image-74011\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen8-1.png 343w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen8-1-300x176.png 300w\" sizes=\"auto, (max-width: 343px) 100vw, 343px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"346\" data-id=\"74010\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen9-1.png\" alt=\"\" class=\"wp-image-74010\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen9-1.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen9-1-300x176.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n<\/figure>\n\n\n\n<p><strong>Una vez tenemos el bot\u00f3n configurado a nuestro gusto, podemos duplicarlo y modificar \u00fanicamente el texto para crear las dem\u00e1s opciones del men\u00fa.<\/strong> De esta manera mantenemos el mismo estilo y evitamos configurarlo desde cero cada vez.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"268\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen10.png\" alt=\"\" class=\"wp-image-74012\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen10.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen10-300x137.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Ahora vamos a guardar la escena<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"358\" height=\"375\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen11.png\" alt=\"\" class=\"wp-image-74013\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen11.png 358w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen11-286x300.png 286w\" sizes=\"auto, (max-width: 358px) 100vw, 358px\" \/><\/figure>\n\n\n\n<p>Una vez se tenga la escena guardada, la idea es que funcione los botones, para esto vamos primero a crear un script para que se redirija a una nueva escena<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"261\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen12.png\" alt=\"\" class=\"wp-image-74014\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen12.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen12-300x133.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Una vez creado el script vamos a crear un objeto vac\u00edo y a agregar un nuevo componente<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"195\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen13.png\" alt=\"\" class=\"wp-image-74015\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen13.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen13-300x99.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>En el nuevo componente vinculamos el script que creamos<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"426\" height=\"131\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen14.png\" alt=\"\" class=\"wp-image-74016\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen14.png 426w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen14-300x92.png 300w\" sizes=\"auto, (max-width: 426px) 100vw, 426px\" \/><\/figure>\n\n\n\n<p>Ahora nos dirigimos al bot\u00f3n de iniciar y ah\u00ed a \u201cbutton\u201d<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"460\" height=\"416\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen15.png\" alt=\"\" class=\"wp-image-74017\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen15.png 460w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen15-300x271.png 300w\" sizes=\"auto, (max-width: 460px) 100vw, 460px\" \/><\/figure>\n\n\n\n<p>Ah\u00ed vamos a relacionar el objeto que creamos con el script, ah\u00ed vamos a relacionar la funci\u00f3n de jugar<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"567\" height=\"412\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen16.png\" alt=\"\" class=\"wp-image-74020\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen16.png 567w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen16-300x218.png 300w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/figure>\n\n\n\n<p>Para el bot\u00f3n de opciones, vamos a generar un nuevo panel sobre nuestro Canva<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"839\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen17.png\" alt=\"\" class=\"wp-image-74021\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen17.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen17-211x300.png 211w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Sobre este nuevo panel vamos a agregar un nuevo texto que diga controles<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"822\" data-id=\"74025\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen18-1.png\" alt=\"\" class=\"wp-image-74025\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen18-1.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen18-1-215x300.png 215w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n<\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"293\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/a.png\" alt=\"\" class=\"wp-image-74024\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/a.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/a-300x149.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Ahora en UI \u2013 IMAGE, vamos a agregar las im\u00e1genes referentes a los&nbsp; controles como mouse y las letras<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"575\" height=\"240\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen20.png\" alt=\"\" class=\"wp-image-74026\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen20.png 575w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen20-300x125.png 300w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/figure>\n\n\n\n<p>Y las configuramos como Sprite y Singles<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"445\" height=\"446\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen21.png\" alt=\"\" class=\"wp-image-74027\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen21.png 445w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen21-300x300.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen21-150x150.png 150w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"481\" height=\"332\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen22.png\" alt=\"\" class=\"wp-image-74028\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen22.png 481w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen22-300x207.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen22-392x272.png 392w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen22-130x90.png 130w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><\/figure>\n\n\n\n<p>Ahora sobre el panel con clic derecho vamos a UI- IMAGE y agregamos las im\u00e1genes<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"822\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen23.png\" alt=\"\" class=\"wp-image-74029\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen23.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen23-215x300.png 215w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"269\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen24.png\" alt=\"\" class=\"wp-image-74030\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen24.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen24-300x137.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Para a\u00f1adir texto, nos posicionamos encima de panel y con clic derecho vamos a UI \u2013 TEXT<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"773\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen25.png\" alt=\"\" class=\"wp-image-74031\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen25.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen25-229x300.png 229w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Ahora seg\u00fan nuestras preferencias lo modificamos a nuestra elecci\u00f3n<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"578\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen26.png\" alt=\"\" class=\"wp-image-74032\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen26.png 440w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen26-228x300.png 228w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/figure>\n\n\n\n<p>Ahora para que este panel se oculte y aparezca se crea un script para que se active y desactive seg\u00fan el bot\u00f3n que se de clic<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"355\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen27.png\" alt=\"\" class=\"wp-image-74033\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen27.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen27-300x181.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Importaci\u00f3n y creaci\u00f3n del men\u00fa de personajes<\/h2>\n\n\n\n<p>El bot\u00f3n \u201copciones\u201d, nos va a permitir escoger el personaje, por ende nosotros creamos nuestro personaje en AVATURN<\/p>\n\n\n\n<p>Aqu\u00ed vamos a descargar nuestro modelo inicial en .gbl<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"302\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen28.png\" alt=\"\" class=\"wp-image-74034\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen28.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen28-300x154.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Esto nos va a descargar un .zip con el modelo en .fbx y los materiales, debemos subir la carpeta descomprimida a Unity<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"454\" height=\"220\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen29.png\" alt=\"\" class=\"wp-image-74035\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen29.png 454w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen29-300x145.png 300w\" sizes=\"auto, (max-width: 454px) 100vw, 454px\" \/><\/figure>\n\n\n\n<p>Ahora vamos a crear un nuevo panel como se indic\u00f3 anteriormente y lo llamaremos personaje<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"364\" height=\"334\" data-id=\"74036\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen30.png\" alt=\"\" class=\"wp-image-74036\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen30.png 364w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen30-300x275.png 300w\" sizes=\"auto, (max-width: 364px) 100vw, 364px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"802\" data-id=\"74037\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen31.png\" alt=\"\" class=\"wp-image-74037\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen31.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen31-220x300.png 220w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Y aqu\u00ed le aplicamos la textura de nuestros personajes, repetimos esto para cada uno<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"445\" height=\"713\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen32.png\" alt=\"\" class=\"wp-image-74038\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen32.png 445w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen32-187x300.png 187w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/figure>\n\n\n\n<p>Ahora creamos un objeto vac\u00edo, esto es para poder escoger el personaje en el juego<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"195\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen33.png\" alt=\"\" class=\"wp-image-74039\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen33.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen33-300x99.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"340\" height=\"392\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen34.png\" alt=\"\" class=\"wp-image-74040\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen34.png 340w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen34-260x300.png 260w\" sizes=\"auto, (max-width: 340px) 100vw, 340px\" \/><\/figure>\n\n\n\n<p>En el objeto vac\u00edo ponemos el script de selecci\u00f3n de personaje y ubicamos nuestros modelos en cada uno<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"444\" height=\"438\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen35.png\" alt=\"\" class=\"wp-image-74041\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen35.png 444w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen35-300x296.png 300w\" sizes=\"auto, (max-width: 444px) 100vw, 444px\" \/><\/figure>\n\n\n\n<p>Luego de esto agregamos botones de selecci\u00f3n para cada personaje y agregamos el script a cada bot\u00f3n<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"412\" height=\"867\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen36-1.png\" alt=\"\" class=\"wp-image-74044\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen36-1.png 412w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen36-1-143x300.png 143w\" sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"103\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen37-1.png\" alt=\"\" class=\"wp-image-74045\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen37-1.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen37-1-300x52.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n del Escenario y Mundo del Juego<\/h2>\n\n\n\n<p><strong>Vamos a utilizar un conjunto de prefabricados que nos permitir\u00e1 construir y organizar nuestro mapa de manera m\u00e1s r\u00e1pida y eficiente.<\/strong><br>Estos prefabs incluyen elementos ya configurados que podemos arrastrar directamente a la escena para ir dando forma al escenario. Pero tambi\u00e9n podemos insertar nuestros modelos de blender en .fbx de la misma manera arrastr\u00e1ndolos a la carpeta.<\/p>\n\n\n\n<p>cuando lo a\u00f1adamos a nuestro escena nos aparecer\u00e1 esto, ya con esto empezaremos a crear nuestro nivel<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"519\" height=\"389\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen1-2.png\" alt=\"\" class=\"wp-image-74046\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen1-2.png 519w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen1-2-300x225.png 300w\" sizes=\"auto, (max-width: 519px) 100vw, 519px\" \/><\/figure>\n\n\n\n<p>La idea es que se vea algo similar a la imagen de abajo<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"401\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen2-2.png\" alt=\"\" class=\"wp-image-74047\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen2-2.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen2-2-300x200.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<p>A\u00f1adimos las texturas y empezamos a modelar el nivel<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"540\" data-id=\"74050\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/a-2.png\" alt=\"\" class=\"wp-image-74050\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/a-2.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/a-2-300x269.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"464\" data-id=\"74053\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/d.png\" alt=\"\" class=\"wp-image-74053\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/d.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/d-300x231.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"430\" data-id=\"74052\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/v.png\" alt=\"\" class=\"wp-image-74052\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/v.png 504w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/v-300x256.png 300w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"407\" height=\"543\" data-id=\"74051\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/b.png\" alt=\"\" class=\"wp-image-74051\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/b.png 407w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/b-225x300.png 225w\" sizes=\"auto, (max-width: 407px) 100vw, 407px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Vamos a duplicar las salas y asi terminamos de crear el mapa<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"365\" height=\"487\" data-id=\"74054\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/1.png\" alt=\"\" class=\"wp-image-74054\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/1.png 365w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/1-225x300.png 225w\" sizes=\"auto, (max-width: 365px) 100vw, 365px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"535\" height=\"491\" data-id=\"74055\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/2.png\" alt=\"\" class=\"wp-image-74055\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/2.png 535w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/2-300x275.png 300w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"489\" data-id=\"74057\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/3.png\" alt=\"\" class=\"wp-image-74057\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/3.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/3-300x244.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"563\" height=\"564\" data-id=\"74056\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/4.png\" alt=\"\" class=\"wp-image-74056\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/4.png 563w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/4-300x300.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/4-150x150.png 150w\" sizes=\"auto, (max-width: 563px) 100vw, 563px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Ahora vamos a levantar las paredes<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"373\" data-id=\"74062\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/55.png\" alt=\"\" class=\"wp-image-74062\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/55.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/55-300x186.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"259\" data-id=\"74059\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/111.png\" alt=\"\" class=\"wp-image-74059\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/111.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/111-300x129.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"348\" data-id=\"74058\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/11.png\" alt=\"\" class=\"wp-image-74058\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/11.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/11-300x173.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"356\" data-id=\"74061\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/22.png\" alt=\"\" class=\"wp-image-74061\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/22.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/22-300x177.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"487\" data-id=\"74063\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/33.png\" alt=\"\" class=\"wp-image-74063\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/33.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/33-300x243.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"445\" data-id=\"74060\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/44.png\" alt=\"\" class=\"wp-image-74060\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/44.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/44-300x222.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Para el techo vamos a duplicar el suelo y rotarlo para que se acople de manera adecuada<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"419\" data-id=\"74067\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen20-2.png\" alt=\"\" class=\"wp-image-74067\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen20-2.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen20-2-300x209.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen20-2-392x272.png 392w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen20-2-130x90.png 130w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"427\" data-id=\"74065\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen21-2.png\" alt=\"\" class=\"wp-image-74065\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen21-2.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen21-2-300x213.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"419\" data-id=\"74066\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen19.png\" alt=\"\" class=\"wp-image-74066\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen19.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen19-300x209.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen19-392x272.png 392w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen19-130x90.png 130w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n<\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n del minijuego<\/h2>\n\n\n\n<p>Descargamos el fbx del chip para el minijuego<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"320\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/432.png\" alt=\"\" class=\"wp-image-74068\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/432.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/432-300x159.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<p>A\u00f1adimos el chip a las salas<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-8 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"356\" data-id=\"74070\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/543.png\" alt=\"\" class=\"wp-image-74070\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/543.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/543-300x177.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Ahora creamos dos scripts,<\/p>\n\n\n\n<p>PuzzleManager<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\n\npublic class PuzzleManager : MonoBehaviour\n\n{\n\n&nbsp;&nbsp;&nbsp; public static PuzzleManager instance;\n\n&nbsp;&nbsp;&nbsp; public bool&#91;] piecesCollected = new bool&#91;4];\n\n&nbsp;&nbsp;&nbsp; private void Awake()\n\n&nbsp;&nbsp;&nbsp; {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance = this;\n\n&nbsp;&nbsp;&nbsp; }\n\n&nbsp;&nbsp;&nbsp; public void CollectPiece(int id)\n\n&nbsp;&nbsp;&nbsp; {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; piecesCollected&#91;id] = true;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UnityEngine.Debug.Log(\"Pieza \" + id + \" recogida!\");\n\n&nbsp;&nbsp;&nbsp; }\n\n&nbsp;&nbsp;&nbsp; public bool HasAllPieces()\n\n&nbsp;&nbsp;&nbsp; {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; piecesCollected.Length; i++)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!piecesCollected&#91;i]) return false;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;\n\n&nbsp;&nbsp;&nbsp; }\n\n}\n\nY PuzzlePiece\n\nusing UnityEngine;\n\npublic class PuzzlePiece : MonoBehaviour\n\n{\n\n&nbsp;&nbsp;&nbsp; public int pieceID;\n\n&nbsp;&nbsp;&nbsp; private void OnTriggerEnter(Collider other)\n\n&nbsp;&nbsp;&nbsp; {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (other.CompareTag(\"Player\"))\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PuzzleManager.instance.CollectPiece(pieceID);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UnityEngine.Debug.Log(\"Recogiste la pieza #\" + pieceID);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Destroy(gameObject);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }\n\n&nbsp;&nbsp;&nbsp; }\n\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"543\" height=\"538\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen24-2.png\" alt=\"\" class=\"wp-image-74071\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen24-2.png 543w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen24-2-300x297.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen24-2-150x150.png 150w\" sizes=\"auto, (max-width: 543px) 100vw, 543px\" \/><\/figure>\n\n\n\n<p>Le a\u00f1adimos el script de puzzle Piece al chip que hemos creado<\/p>\n\n\n\n<p>Creamos un empty y lo nombramos PuzzleManager, a este empty le agregamos el script de PuzzleManager<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"292\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen25-1.png\" alt=\"\" class=\"wp-image-74072\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen25-1.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen25-1-300x146.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<p>Vamos a a\u00f1adirle Mesh collider al piso para que nuestro personaje no atraviese el piso Y a las paredes tambien<\/p>\n\n\n\n<p>Vamos a a\u00f1adir ahora el jugador para verificar que el minijuego funcione<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-9 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"329\" data-id=\"74073\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen26-2.png\" alt=\"\" class=\"wp-image-74073\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen26-2.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen26-2-300x164.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"403\" data-id=\"74074\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen27-2.png\" alt=\"\" class=\"wp-image-74074\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen27-2.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen27-2-300x201.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Vamos a a\u00f1adir ahora el jugador para verificar que el minijuego funcione<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"529\" height=\"429\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen28-1.png\" alt=\"\" class=\"wp-image-74077\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen28-1.png 529w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen28-1-300x243.png 300w\" sizes=\"auto, (max-width: 529px) 100vw, 529px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-10 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"247\" height=\"292\" data-id=\"74078\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen29-1.png\" alt=\"\" class=\"wp-image-74078\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"249\" height=\"572\" data-id=\"74076\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen30-1.png\" alt=\"\" class=\"wp-image-74076\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen30-1.png 249w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen30-1-131x300.png 131w\" sizes=\"auto, (max-width: 249px) 100vw, 249px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Le agregamos el capsule collider<\/p>\n\n\n\n<p>Y vamos a hacer el script para el movimiento del jugador<\/p>\n\n\n\n<p>El script se llama PlayerMovement<\/p>\n\n\n\n<p>using UnityEngine;<\/p>\n\n\n\n<p>public class PlayerMovement : MonoBehaviour<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; public float speed = 5f;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; private Rigidbody rb;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; private void Start()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rb = GetComponent&lt;Rigidbody&gt;();<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; private void FixedUpdate()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float h = Input.GetAxis(&#8220;Horizontal&#8221;);<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float v = Input.GetAxis(&#8220;Vertical&#8221;);<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Vector3 direction = new Vector3(h, 0, v) * speed;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rb.linearVelocity = new Vector3(direction.x, rb.linearVelocity.y, direction.z);<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; }<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>Y vamos a configurar la camara y su movimiento<\/p>\n\n\n\n<p>Para el movimiento de la camara usaremos el siguiente script llamado CameraFollow<\/p>\n\n\n\n<p>using UnityEngine;<\/p>\n\n\n\n<p>public class CameraFollow : MonoBehaviour<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; public Transform target;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; public Vector3 offset;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;void FixedUpdate()<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (target != null)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transform.position = target.position + offset;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; }<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>Y seleccionamos en target el player para que lo siga<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"364\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/1314-1.png\" alt=\"\" class=\"wp-image-74081\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/1314-1.png 602w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/1314-1-300x181.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<p>En consola nos muestra que recogimos la pieza<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"471\" height=\"485\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/35.png\" alt=\"\" class=\"wp-image-74082\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/35.png 471w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/35-291x300.png 291w\" sizes=\"auto, (max-width: 471px) 100vw, 471px\" \/><\/figure>\n\n\n\n<p>Como ya esta funcionando vamos a duplicar la pieza, y las vamos a repartir en las diferentes salas<\/p>\n\n\n\n<p>Duplicamos con Ctrl + D, y vamos a distribuirlas en las salas<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"101\" height=\"65\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen34-1.png\" alt=\"\" class=\"wp-image-74083\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-11 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"536\" height=\"354\" data-id=\"74085\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen36-2.png\" alt=\"\" class=\"wp-image-74085\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen36-2.png 536w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen36-2-300x198.png 300w\" sizes=\"auto, (max-width: 536px) 100vw, 536px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"553\" height=\"274\" data-id=\"74086\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen35-1.png\" alt=\"\" class=\"wp-image-74086\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen35-1.png 553w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen35-1-300x149.png 300w\" sizes=\"auto, (max-width: 553px) 100vw, 553px\" \/><\/figure>\n<\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementaci\u00f3n de la IA en enemigos<\/h2>\n\n\n\n<p>Descargaremos nuestro personaje (enemigo) desde mixamo, lo descargaremos en pose T y con Skin, tambi\u00e9n descargaremos las animaciones sin skin y a 60 frames.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-12 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"292\" data-id=\"75769\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen1-3.png\" alt=\"\" class=\"wp-image-75769\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen1-3.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen1-3-300x149.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"370\" data-id=\"75770\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen2-1.png\" alt=\"\" class=\"wp-image-75770\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen2-1.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen2-1-300x188.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Arrastramos el enemigo en pose T a nuestro editor de unity<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"204\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen3-1.png\" alt=\"\" class=\"wp-image-75772\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen3-1.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen3-1-300x104.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Crearemos una carpeta para agregar las animaciones y las arrastramos tambien<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"172\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen4-1.png\" alt=\"\" class=\"wp-image-75818\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen4-1.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen4-1-300x88.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Seleccionamos la animaci\u00f3n y, en el Inspector, vamos a la pesta\u00f1a Rig.<br>All\u00ed cambiamos el Animation Type a Humanoid, lo que permite que la animaci\u00f3n se adapte correctamente al esqueleto y dise\u00f1o del enemigo.<br>Finalmente, hacemos clic en Apply para guardar los cambios.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"452\" height=\"690\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen5-1.png\" alt=\"\" class=\"wp-image-75819\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen5-1.png 452w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen5-1-197x300.png 197w\" sizes=\"auto, (max-width: 452px) 100vw, 452px\" \/><\/figure>\n\n\n\n<p>Vamos a la pesta\u00f1a Animation y cambiamos el nombre del clip. Luego activamos la opci\u00f3n Loop Time para que la animaci\u00f3n se repita de forma continua. Finalmente, hacemos clic en Apply para guardar los cambios.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"444\" height=\"673\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen6-1.png\" alt=\"\" class=\"wp-image-75821\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen6-1.png 444w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen6-1-198x300.png 198w\" sizes=\"auto, (max-width: 444px) 100vw, 444px\" \/><\/figure>\n\n\n\n<p>Luego moveremos la animaci\u00f3n fuera del contenedor para poder aplic\u00e1rsela a nuestro personaje<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"193\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen7-1.png\" alt=\"\" class=\"wp-image-75825\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen7-1.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen7-1-300x98.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Hacemos este mismo proceso con todas las animaciones que vayamos a utilizar.<\/p>\n\n\n\n<p><br>Luego creamos un <strong>Animator Controller<\/strong> para gestionar el cambio de animaciones seg\u00fan las acciones que realice el personaje.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"343\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen8-2.png\" alt=\"\" class=\"wp-image-75829\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen8-2.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen8-2-300x175.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Construimos los bucles de transici\u00f3n entre animaciones dentro del <em>Animator Controller<\/em>, definiendo cu\u00e1ndo y c\u00f3mo cambia cada animaci\u00f3n seg\u00fan el comportamiento del personaje.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"362\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen9-2.png\" alt=\"\" class=\"wp-image-75833\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen9-2.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen9-2-300x184.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Al objeto enemigo le agregaremos el componente Animator. Dentro de este componente seleccionaremos el Animator Controller que creamos previamente y asignaremos tambi\u00e9n el Avatar (esqueleto del personaje) para que las animaciones se reproduzcan correctamente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"318\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen10-1.png\" alt=\"\" class=\"wp-image-75834\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen10-1.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen10-1-300x162.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Agregaremos el script del enemigo, el cual se encargar\u00e1 de gestionar el cambio de animaciones, el patrullaje aleatorio, y el resto de comportamientos necesarios para su funcionamiento dentro del juego.<\/p>\n\n\n\n<p>using UnityEngine;<br>using UnityEngine.AI;<\/p>\n\n\n\n<p>public class Enemigo : MonoBehaviour<br>{<br>[Header(&#8220;Componentes&#8221;)]<br>public NavMeshAgent agent;<br>public Animator animator;<br>public string paramCorrer;<br>public string paramAtacar;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Header(\"Jugador\")]\npublic Transform jugador;\n\n&#91;Header(\"Percepci\u00f3n\")]\npublic float radioDeteccion;\npublic float radioAtaque;\n\n&#91;Header(\"Patrulla\")]\npublic float radioPatrulla;\npublic float tiempoIdle;\n\nprivate float idleTimer;\nprivate bool tieneDestino = false;\nprivate bool persiguiendo = false;\nprivate bool atacando = false;\n\n&#91;Header(\"Da\u00f1o\")]\npublic float tiempoImpacto;    \/\/ tiempo exacto del golpe\npublic float duracionAtaque;   \/\/ duraci\u00f3n total de la animaci\u00f3n\npublic int da\u00f1o = 20;\n\n&#91;Header(\"Cooldown de da\u00f1o\")]\npublic float tiempoEntreDa\u00f1os;   \/\/ cada cu\u00e1nto puede hacer da\u00f1o\nprivate float ultimoDa\u00f1o;\n\n\nvoid Start()\n{\n    NuevoDestino();\n}\n\n\nvoid Update()\n{\n    float distancia = Vector3.Distance(transform.position, jugador.position);\n\n    if (atacando)\n    {\n        agent.ResetPath();\n        return;\n    }\n\n    \/\/ Detectar jugador\n    if (distancia &lt;= radioDeteccion &amp;&amp; distancia &gt; radioAtaque)\n        persiguiendo = true;\n    else if (distancia &gt; radioDeteccion + 2f)\n        persiguiendo = false;\n\n    \/\/ Atacar\n    if (distancia &lt;= radioAtaque)\n    {\n        StartCoroutine(Atacar());\n        return;\n    }\n\n    \/\/ Perseguir\n    if (persiguiendo)\n    {\n        agent.speed=8;\n        agent.SetDestination(jugador.position);\n        animator.SetBool(paramCorrer, true);\n        return;\n    }\n\n    \/\/ Patrulla\n    animator.SetBool(paramCorrer, agent.velocity.magnitude &gt; 0.1f);\n\n    if (!tieneDestino)\n    {\n        NuevoDestino();\n        return;\n    }\n\n    if (!agent.pathPending &amp;&amp; agent.remainingDistance &lt;= agent.stoppingDistance)\n    {\n        idleTimer += Time.deltaTime;\n\n        if (idleTimer &gt;= tiempoIdle)\n        {\n            idleTimer = 0f;\n            tieneDestino = false;\n        }\n    }\n}\n\n\n\nprivate System.Collections.IEnumerator Atacar()\n{\n    atacando = true;\n\n    agent.ResetPath();\n    agent.speed = 0;\n    animator.SetBool(paramCorrer, false);\n\n    animator.SetTrigger(paramAtacar);\n\n    \/\/ Esperar al frame del golpe\n    yield return new WaitForSeconds(tiempoImpacto);\n\n    \/\/ SOLO HACER DA\u00d1O SI YA PAS\u00d3 EL COOLDOWN\n    if (Time.time - ultimoDa\u00f1o &gt;= tiempoEntreDa\u00f1os)\n    {\n        if (Vector3.Distance(transform.position, jugador.position) &lt;= radioAtaque)\n        {\n            jugador.GetComponent&lt;VidaJugador&gt;().RecibirDa\u00f1o(da\u00f1o);\n            ultimoDa\u00f1o = Time.time;\n        }\n    }\n\n    \/\/ Esperar resto animaci\u00f3n\n    yield return new WaitForSeconds(duracionAtaque - tiempoImpacto);\n\n    atacando = false;\n}\n\n\n\nvoid NuevoDestino()\n{\n    Vector3 randomDir = Random.insideUnitSphere * radioPatrulla + transform.position;\n\n    NavMeshHit hit;\n    if (NavMesh.SamplePosition(randomDir, out hit, radioPatrulla, NavMesh.AllAreas))\n    {\n        agent.SetDestination(hit.position);\n        tieneDestino = true;\n    }\n    else\n    {\n        tieneDestino = false;\n    }\n}\n\n\n\nprivate void OnDrawGizmosSelected()\n{\n    Gizmos.color = Color.yellow;\n    Gizmos.DrawWireSphere(transform.position, radioDeteccion);\n\n    Gizmos.color = Color.red;\n    Gizmos.DrawWireSphere(transform.position, radioAtaque);\n}<\/code><\/pre>\n\n\n\n<p>Aqu\u00ed tienes la redacci\u00f3n mejorada y clara:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Lo m\u00e1s importante para que el enemigo pueda funcionar correctamente y desplazarse por el mapa es crear un NavMesh Surface.<br>Este componente permite generar la malla de navegaci\u00f3n que define las \u00e1reas por donde el enemigo puede caminar.<br>Al hornear (bakear) el NavMesh, las zonas azules indicar\u00e1n exactamente los lugares del escenario donde la IA puede moverse libremente.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-13 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"442\" data-id=\"75837\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen12-1.png\" alt=\"\" class=\"wp-image-75837\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen12-1.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen12-1-300x225.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"551\" data-id=\"75838\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen11-1.png\" alt=\"\" class=\"wp-image-75838\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen11-1.png 589w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen11-1-300x281.png 300w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n<\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Dentro del componente Enemy Script, debemos especificar cu\u00e1l es el Player que el enemigo perseguir\u00e1 dentro del mapa.<br>Adem\u00e1s, en este mismo script se asigna la referencia del propio enemigo y se pueden configurar las dem\u00e1s variables necesarias, como velocidad, distancia de detecci\u00f3n, radio de ataque, tiempos de espera y cualquier otro par\u00e1metro que controle su comportamiento.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"437\" height=\"754\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen13-1.png\" alt=\"\" class=\"wp-image-75840\" style=\"aspect-ratio:1;width:483px;height:auto\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen13-1.png 437w, https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Imagen13-1-174x300.png 174w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Cr\u00e9ditos<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">Pinz\u00f3n Romero, C. I. (2025). Universidad Central<br>Sci-Fi Construction Kit (Modular) | 3D Sci-Fi | Unity Asset Store. (2025, 25 enero). Unity Asset Store. https:\/\/assetstore.unity.com\/packages\/3d\/environments\/sci-fi\/sci-fi-construction-kit-modular-159280<br>20 Ground Material Sets SCI FI | 2D Textures &amp; Materials | Unity Asset Store. (2014, 18 noviembre). Unity Asset Store. https:\/\/assetstore.unity.com\/packages\/2d\/textures-materials\/20-ground-material-sets-sci-fi-12401<br>Sci-Fi Texture Pack 2 | 2D Textures &amp; Materials | Unity Asset Store. (2023, 30 junio). Unity Asset Store. https:\/\/assetstore.unity.com\/packages\/2d\/textures-materials\/sci-fi-texture-pack-2-42026<\/pre>\n\n\n\n<p><strong>Autor:<\/strong>&nbsp;&nbsp;<a href=\"https:\/\/niixer.com\/?s=David+Alejandro+Sanchez+Bola%C3%B1os\">Yhonatan Estyben Garcia Becerra \/Laura Alejandra Casta\u00f1eda Reina \/ Diana Marcela Garzon<\/a><\/p>\n\n\n\n<p><strong>Editor<\/strong>:&nbsp;<a href=\"https:\/\/niixer.com\/?s=Carlos+Ivan+Pinzon+Romero\">Carlos Ivan Pinzon Romero<\/a><\/p>\n\n\n\n<p><strong>C\u00f3digo<\/strong>: M3DV<a href=\"https:\/\/niixer.com\/?s=CG+-+20252\">\u2013 20252<\/a><\/p>\n\n\n\n<p><strong>Universidad:<\/strong>&nbsp;<a href=\"https:\/\/niixer.com\/?s=Universidad+Central\">Universidad Central<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>AstraCore Escape es un proyecto desarrollado con Unity que combina exploraci\u00f3n, parkour y mec\u00e1nicas de minijuego dentro de un entorno futurista. Este documento presenta el paso a paso del proceso de creaci\u00f3n, desde los primeros elementos visuales hasta la integraci\u00f3n de inteligencia artificial y la construcci\u00f3n de un minijuego interno.Seguir Leyendo<\/p>\n","protected":false},"author":1951,"featured_media":76021,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[30],"tags":[836],"class_list":["post-74000","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-niixer","tag-unity-3d"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u00bfComo se creo AstraCore Espace?<\/title>\n<meta name=\"description\" content=\"En este art\u00edculo te desvelamos todo el proceso detr\u00e1s de la creaci\u00f3n de AstraCore Espace. Si deseas saber m\u00e1s este art\u00edculo es para ti.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00bfComo se creo AstraCore Espace?\" \/>\n<meta property=\"og:description\" content=\"En este art\u00edculo te desvelamos todo el proceso detr\u00e1s de la creaci\u00f3n de AstraCore Espace. Si deseas saber m\u00e1s este art\u00edculo es para ti.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/\" \/>\n<meta property=\"og:site_name\" content=\"Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/niixer\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-29T01:30:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-09T16:48:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Image_20251126_201529_076.webp.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1090\" \/>\n\t<meta property=\"og:image:height\" content=\"495\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"lcastanedar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"lcastanedar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u00bfComo se creo AstraCore Espace?","description":"En este art\u00edculo te desvelamos todo el proceso detr\u00e1s de la creaci\u00f3n de AstraCore Espace. Si deseas saber m\u00e1s este art\u00edculo es para ti.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/","og_locale":"es_ES","og_type":"article","og_title":"\u00bfComo se creo AstraCore Espace?","og_description":"En este art\u00edculo te desvelamos todo el proceso detr\u00e1s de la creaci\u00f3n de AstraCore Espace. Si deseas saber m\u00e1s este art\u00edculo es para ti.","og_url":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/","og_site_name":"Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","article_publisher":"https:\/\/www.facebook.com\/niixer\/","article_published_time":"2025-11-29T01:30:06+00:00","article_modified_time":"2026-01-09T16:48:57+00:00","og_image":[{"width":1090,"height":495,"url":"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Image_20251126_201529_076.webp.jpeg","type":"image\/jpeg"}],"author":"lcastanedar","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"lcastanedar","Tiempo de lectura":"25 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/#article","isPartOf":{"@id":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/"},"author":{"name":"lcastanedar","@id":"https:\/\/niixer.com\/#\/schema\/person\/459457d8f5f83ec07219c8c6dd44eec1"},"headline":"AstraCore Espace: Unity juegoAstraCore Espace: Todo el Proceso de Creaci\u00f3n (Unity)AstraCore Espace: Unity juego","datePublished":"2025-11-29T01:30:06+00:00","dateModified":"2026-01-09T16:48:57+00:00","mainEntityOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/"},"wordCount":1769,"publisher":{"@id":"https:\/\/niixer.com\/#organization"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Image_20251126_201529_076.webp.jpeg","keywords":["Unity 3D"],"articleSection":["Niixer"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/","url":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/","name":"\u00bfComo se creo AstraCore Espace?","isPartOf":{"@id":"https:\/\/niixer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/#primaryimage"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Image_20251126_201529_076.webp.jpeg","datePublished":"2025-11-29T01:30:06+00:00","dateModified":"2026-01-09T16:48:57+00:00","description":"En este art\u00edculo te desvelamos todo el proceso detr\u00e1s de la creaci\u00f3n de AstraCore Espace. Si deseas saber m\u00e1s este art\u00edculo es para ti.","breadcrumb":{"@id":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/#primaryimage","url":"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Image_20251126_201529_076.webp.jpeg","contentUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Image_20251126_201529_076.webp.jpeg","width":1090,"height":495},{"@type":"BreadcrumbList","@id":"https:\/\/niixer.com\/index.php\/2025\/11\/28\/astracore-espace-unity-juegoastracore-espace-todo-el-proceso-de-creacion-unityastracore-espace-unity-juego\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/niixer.com\/"},{"@type":"ListItem","position":2,"name":"AstraCore Espace: Unity juegoAstraCore Espace: Todo el Proceso de Creaci\u00f3n (Unity)AstraCore Espace: Unity juego"}]},{"@type":"WebSite","@id":"https:\/\/niixer.com\/#website","url":"https:\/\/niixer.com\/","name":"Portal de noticias de tecnolog\u00eda, ciencia, Android, iOS, Realidad Virtual, Aumentada y Mixta, Videojuegos, computadores, todo lo mas reciente en tecnolog\u00eda","description":"Portal de noticias de tecnolog\u00eda","publisher":{"@id":"https:\/\/niixer.com\/#organization"},"alternateName":"Niixer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/niixer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/niixer.com\/#organization","name":"Niixer","alternateName":"Niixer.com","url":"https:\/\/niixer.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/niixer.com\/#\/schema\/logo\/image\/","url":"https:\/\/niixer.com\/wp-content\/uploads\/2022\/08\/logo-niixer-sin-fondo-1.png","contentUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2022\/08\/logo-niixer-sin-fondo-1.png","width":140,"height":140,"caption":"Niixer"},"image":{"@id":"https:\/\/niixer.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/niixer\/","https:\/\/www.instagram.com\/niixer.tecnologia\/"]},{"@type":"Person","@id":"https:\/\/niixer.com\/#\/schema\/person\/459457d8f5f83ec07219c8c6dd44eec1","name":"lcastanedar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/8ab82f4bfbc31af500c544034e37532b7f6c6bebe72384699627f1587147520b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8ab82f4bfbc31af500c544034e37532b7f6c6bebe72384699627f1587147520b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8ab82f4bfbc31af500c544034e37532b7f6c6bebe72384699627f1587147520b?s=96&d=mm&r=g","caption":"lcastanedar"},"url":"https:\/\/niixer.com\/index.php\/author\/lcastanedar\/"}]}},"jetpack_featured_media_url":"https:\/\/niixer.com\/wp-content\/uploads\/2025\/11\/Image_20251126_201529_076.webp.jpeg","_links":{"self":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/74000","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/users\/1951"}],"replies":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/comments?post=74000"}],"version-history":[{"count":6,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/74000\/revisions"}],"predecessor-version":[{"id":77428,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/74000\/revisions\/77428"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media\/76021"}],"wp:attachment":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media?parent=74000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/categories?post=74000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/tags?post=74000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}