{"id":88935,"date":"2026-05-27T18:30:14","date_gmt":"2026-05-27T23:30:14","guid":{"rendered":"https:\/\/niixer.com\/?p=88935"},"modified":"2026-05-29T15:31:28","modified_gmt":"2026-05-29T20:31:28","slug":"university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity","status":"publish","type":"post","link":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/","title":{"rendered":"University Adventure, un juego de plataformas 2D hecho desde cero en Unity."},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>Introducci\u00f3n:<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La idea del proyecto es hacer un juego de plataforma 2D algo muy parecido a juegos como Mario Bros, el cual consiste en poder saltar y recoger objetos. Donde la idea es poder hacer todo desde cero, las animaciones, el c\u00f3digo, los escenarios, sin implementar alguna plantilla o paquete ya creado con estos elementos y descargadas pre-hechas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de escribir una l\u00ednea de c\u00f3digo o dibujar un p\u00edxel, lo primero fue organizar el proyecto. Unity crea autom\u00e1ticamente la carpeta Assets, pero lo que est\u00e1 dentro lo define el desarrollador, y un proyecto desordenado desde el inicio cobra factura despu\u00e9s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La carpeta Scripts termin\u00f3 con varios archivos, algunos de estos son: <strong>CamaraFollow<\/strong>, <strong>MenuSelector<\/strong>, <strong>MovimientoJugador<\/strong> y <strong>Volver<\/strong>. Cada uno tiene una sola responsabilidad. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las escenas del proyecto muestras como es el flujo completo del juego, desde el men\u00fa inicial, la parte jugable, las instrucciones, cr\u00e9ditos, geme over, win, escena Idle ( la cual es para la animaci\u00f3n del personaje en movimiento) y nivel2. Se intenta mantener todas las ventanas separadas para tener una organizaci\u00f3n en Unity con respecto a las escenas.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"816\" height=\"180\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1183.png\" alt=\"\" class=\"wp-image-89289\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1183.png 816w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1183-300x66.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1183-768x169.png 768w\" sizes=\"auto, (max-width: 816px) 100vw, 816px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Men\u00fa principal<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El men\u00fa de University Adventure es lo primero que se ve al arrancar el juego, donde se encuentran 4 opciones Start Game, instrucciones, Cr\u00e9ditos y Salir, donde se puede navegar con el teclado<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"897\" height=\"385\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Menu-principal.webp\" alt=\"\" class=\"wp-image-88939\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Menu-principal.webp 897w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Menu-principal-300x129.webp 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Menu-principal-768x330.webp 768w\" sizes=\"auto, (max-width: 897px) 100vw, 897px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La navegaci\u00f3n del men\u00fa la maneja el script MenuSelector.cs. La idea es que el jugador use las flechas del teclado ( o W\/S) para desplazarse entre las opciones, y Enter para confirmar. La opci\u00f3n seleccionada se resalta en amarillo y a un tama\u00f1o mayor que las dem\u00e1s para ser diferente y lograr mostrar que puede elegir el jugador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\nusing UnityEngine.SceneManagement;\nusing TMPro;\n\npublic class MenuSelector : MonoBehaviour\n{\n    public TextMeshProUGUI jugar;\n    public TextMeshProUGUI instrucciones;\n    public TextMeshProUGUI creditos;\n    public TextMeshProUGUI salir;\n    private TextMeshProUGUI&#91;] opciones;\n    int indice = 0;\n\n    void Start()\n    {\n        opciones = new TextMeshProUGUI&#91;]\n        {\n            jugar,\n            instrucciones,\n            creditos,\n            salir\n        };\n        ActualizarVisual();\n    }\n\n    void Update()\n    {\n        \/\/ BAJAR\n        if (Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKeyDown(KeyCode.S))\n        {\n            indice++;\n            if (indice &gt;= opciones.Length)\n                indice = 0;\n            ActualizarVisual();\n        }\n\n        \/\/ SUBIR\n        if (Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.W))\n        {\n            indice--;\n            if (indice &lt; 0)\n                indice = opciones.Length - 1;\n            ActualizarVisual();\n        }\n\n        \/\/ ENTER\n        if (Input.GetKeyDown(KeyCode.Return))\n        {\n            Seleccionar();\n        }\n\n        \/\/ ESC\n        if (Input.GetKeyDown(KeyCode.Escape))\n        {\n            Salir();\n        }\n    }\n\n    void ActualizarVisual()\n    {\n        for (int i = 0; i &lt; opciones.Length; i++)\n        {\n            opciones&#91;i].color = Color.white;\n            opciones&#91;i].fontSize = 40;\n        }\n        opciones&#91;indice].color = Color.yellow;\n        opciones&#91;indice].fontSize = 50;\n    }\n\n    void Salir()\n    {\n        #if UNITY_EDITOR\n            UnityEditor.EditorApplication.isPlaying = false;\n        #else\n            Application.Quit();\n        #endif\n    }\n\n    void Seleccionar()\n    {\n        switch (indice)\n        {\n            case 0:\n                SceneManager.LoadScene(\"SeleccionPersonaje\");\n                break;\n            case 1:\n                SceneManager.LoadScene(\"Instrucciones\");\n                break;\n            case 2:\n                SceneManager.LoadScene(\"Creditos\");\n                break;\n            case 3:\n                Salir();\n                break;\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El script guarda las cuadro referencias de TextMeshPro en donde hay varios m\u00e9todos como ActualizarVisual al momento de seleccionar una opci\u00f3n, seleccionar, Update para poder desplazarse en el men\u00fa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>SCRIPT VOLVER<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\nusing UnityEngine.SceneManagement;\nusing UnityEngine.UI;\n\npublic class Volver : MonoBehaviour\n{\n    private Button boton;\n\n    void Start()\n    {\n        boton = GetComponent&lt;Button&gt;();\n        \n        if (boton != null)\n        {\n            boton.onClick.AddListener(Regresar);\n        }\n    }\n\n    void Update()\n    {\n        if (Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKeyDown(KeyCode.S) ||\n            Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.W))\n        {\n            if (boton != null)\n            {\n                boton.Select();\n            }\n        }\n\n        if (Input.GetKeyDown(KeyCode.Return))\n        {\n            Regresar();\n        }\n    }\n\n    public void Regresar()\n    {\n        SceneManager.LoadScene(\"MenuInicial\");\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Las pantallas secundarias como lo son Instrucciones y Cr\u00e9ditos tienen un bot\u00f3n para regresar al men\u00fa principal. El script Volver.cs se encarga de eso, donde esta el evento onClick del bot\u00f3n del Canvas y tambi\u00e9n responde a ENTER desde el teclado<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>PERSONAJE<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"287\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1181-1024x287.png\" alt=\"\" class=\"wp-image-89285\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1181-1024x287.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1181-300x84.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1181-768x215.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1181.png 1353w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Por la parte del personaje se tomo con ayuda de Inteligencia Artificial para que nos generara los dise\u00f1os en 2d donde se le pide que nos diera a el personaje jugable en diferentes posturas, estas animaciones se les debe poner al personaje, ya que sin ser solo una foto movible en le juego sin ninguna animaci\u00f3n. Esta animaci\u00f3n se la asigna directamente al personaje.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>SCRIPT PERSONAJE <\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>using Unity.VisualScripting;\nusing UnityEngine;\nusing UnityEngine.SceneManagement;\n\npublic class MovimientoJugador : MonoBehaviour\n{\n    &#91;Header(\"Movimiento\")]\n    public float velocidad = 5f;\n    public float fuerzaSalto = 8f;\n\n    &#91;Header(\"Sprites de personajes\")]\n    public Sprite spriteCristian;\n    public Sprite spriteBrayan;\n\n    &#91;Header(\"Opcional: Animator (si usas animaciones)\")]\n    public Animator animator;\n\n    private Rigidbody2D rb;\n    private SpriteRenderer spriteRenderer;\n    private bool estaEnSuelo;\n\n    void Start()\n    {\n        rb = GetComponent&lt;Rigidbody2D&gt;();\n        spriteRenderer = GetComponent&lt;SpriteRenderer&gt;();\n\n        int seleccion = 0;\n        if (PersistenciaPersonaje.Instance != null)\n        {\n            seleccion = PersistenciaPersonaje.Instance.personajeSeleccionado;\n        }\n\n        if (seleccion == 0 &amp;&amp; spriteCristian != null)\n        {\n            spriteRenderer.sprite = spriteCristian;\n        }\n        else if (seleccion == 1 &amp;&amp; spriteBrayan != null)\n        {\n            spriteRenderer.sprite = spriteBrayan;\n        }\n\n        if (animator != null)\n        {\n            animator.SetInteger(\"Personaje\", seleccion);\n        }\n    }\n\n    void Update()\n    {\n        float movimiento = Input.GetAxisRaw(\"Horizontal\");\n        rb.linearVelocity = new Vector2(movimiento * velocidad, rb.linearVelocity.y);\n\n        if (movimiento != 0)\n        {\n            spriteRenderer.flipX = movimiento &lt; 0;\n        }\n\n        if (Input.GetKeyDown(KeyCode.Space) &amp;&amp; estaEnSuelo)\n        {\n            rb.linearVelocity = new Vector2(rb.linearVelocity.x, fuerzaSalto);\n            estaEnSuelo = false;\n        }\n\n        if (animator != null)\n        {\n            animator.SetFloat(\"Velocidad\", Mathf.Abs(movimiento));\n            animator.SetBool(\"EnSuelo\", estaEnSuelo);\n        }\n    }\n\n    void OnCollisionEnter2D(Collision2D collision)\n    {\n        if (collision.gameObject.CompareTag(\"Ground\"))\n        {\n            estaEnSuelo = true;\n        }\n    }\n\n    private void OnTriggerEnter2D(Collider2D collision)\n    {\n        if (collision.CompareTag(\"Vacio\"))\n        {\n            SceneManager.LoadScene(SceneManager.GetActiveScene().name);\n        }\n\n        if (collision.transform.CompareTag(\"Coin\"))\n        {\n            Destroy(collision.gameObject);\n        }\n\n        if (collision.transform.CompareTag(\"Spikes\"))\n        {\n            SceneManager.LoadScene(SceneManager.GetActiveScene().name);\n        }\n    }\n\n    void OnTriggerExit2D(Collider2D other)\n    {\n        if (other.CompareTag(\"Ground\"))\n        {\n            estaEnSuelo = false;\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En su l\u00f3gica del personaje se usan los eventos OnCollisionEnter2D y OnCollisionExis2D, las cuales consisten en que el personaje entre en contacto con cualquier objeto con colisionador, como el suelo, muros, obst\u00e1culos. La interacci\u00f3n con el entorno funciona con estado en donde si el personaje esta en contacto con el suelo su estado es true, al saltar o ya no estar en contacto con cualquier objeto su estado va hacer false.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>SEGUIMIENTO DEL JUGADOR<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para la jugabilidad, la c\u00e1mara hace un seguimiento del jugador donde se hizo un script CamaraFollow.cs hace exactamente eso, en cada frame actualiza la posici\u00f3n de la cama para que sea igual con las del personaje, manteniendo fija la coordenada Z.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\npublic class CamaraFollow : MonoBehaviour\n{\n    public Transform target;\n    void LateUpdate()\n    {\n        if (target != null)\n            transform.position = new Vector3(target.position.x, target.position.y, transform.position.z);\n    }\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"469\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1180-1024x469.png\" alt=\"\" class=\"wp-image-89284\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1180-1024x469.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1180-300x137.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1180-768x352.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1180-1536x703.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1180.png 1710w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se empieza ir configurando cada objeto que va a estar en el mundo, los cuales van hacer el suelo para que el personaje no se caiga al vac\u00edo, y cada uno de los obst\u00e1culos donde ya quedan como plantilla y se le asigna a los personajes que tengas f\u00edsicas  <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>NAVEGACI\u00d3N DE PERSONAJE<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>using UnityEngine;\nusing UnityEngine.SceneManagement;\nusing TMPro;\n\npublic class NavegacionPersonajes : MonoBehaviour\n{\n    &#91;Header(\"Textos botones\")]\n    public TextMeshProUGUI cristian;\n    public TextMeshProUGUI brayan;\n\n    &#91;Header(\"Escena de juego\")]\n    public string escenaJuego = \"SampleScene\";\n\n    private TextMeshProUGUI&#91;] opciones;\n\n    private int indiceActual = 0;\n\n    private PersistenciaPersonaje persistencia;\n\n    void Start()\n    {\n        persistencia = PersistenciaPersonaje.Instance;\n\n        opciones = new TextMeshProUGUI&#91;]\n        {\n            cristian,\n            brayan\n        };\n\n        ActualizarVisual();\n    }\n\n    void Update()\n    {\n        \/\/ DERECHA\n        if (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetKeyDown(KeyCode.D))\n        {\n            indiceActual++;\n\n            if (indiceActual &gt;= opciones.Length)\n                indiceActual = 0;\n\n            ActualizarVisual();\n        }\n\n        \/\/ IZQUIERDA\n        if (Input.GetKeyDown(KeyCode.LeftArrow) || Input.GetKeyDown(KeyCode.A))\n        {\n            indiceActual--;\n\n            if (indiceActual &lt; 0)\n                indiceActual = opciones.Length - 1;\n\n            ActualizarVisual();\n        }\n\n        \/\/ ENTER o ESPACIO\n        if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.Space))\n        {\n            if (persistencia != null)\n            {\n                persistencia.personajeSeleccionado = indiceActual;\n                SceneManager.LoadScene(escenaJuego);\n            }\n        }\n    }\n\n    void ActualizarVisual()\n    {\n        for (int i = 0; i &lt; opciones.Length; i++)\n        {\n            opciones&#91;i].color = Color.white;\n            opciones&#91;i].fontSize = 40;\n        }\n\n        opciones&#91;indiceActual].color = Color.yellow;\n        opciones&#91;indiceActual].fontSize = 50;\n    }\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"564\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1184-1024x564.png\" alt=\"\" class=\"wp-image-89297\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1184-1024x564.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1184-300x165.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1184-768x423.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-1184.png 1078w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Este script sirve para la elecci\u00f3n del personaje en donde se configura el uso de las flechas para tomar la decision de que personaje elegir, en donde al elegir uno, se guarda la eleccion en el archivo de persistencia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>CR\u00c9DITOS<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Autor:<\/strong><a href=\"https:\/\/niixer.com\/?s=brayan+david+banguera\">&nbsp;Brayan Banguera<\/a> &#8211; <a href=\"https:\/\/niixer.com\/?s=cristian+camilo+dominguez+cepeda\">Cristian Camilo Dominguez<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Editor:&nbsp;<\/strong>Carlos Ivan Pinzon Romero<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>C\u00f3digo:<\/strong>&nbsp;UCCG-9<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Universidad:<\/strong>&nbsp;<a href=\"https:\/\/www.ucentral.edu.co\/\">Universidad Central<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fuentes<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">LuisCanary. (2025, 31 julio). Tutorial COMPLETO de Unity 2D desde CERO | \u00a1Crea tu propio juego!\ud83c\udfae [V\u00eddeo]. YouTube. <a href=\"https:\/\/www.youtube.com\/watch?v=mtA2iIGNCkA\">https:\/\/www.youtube.com\/watch?v=mtA2iIGNCkA<\/a><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">LuisCanary. (2020, 14 abril). Juego de Plataformas 2D\/Unity Tutorial\/1-Capitulo\/Escenario\/Programacion videojuegos [V\u00eddeo]. YouTube. <a href=\"https:\/\/www.youtube.com\/watch?v=-m7ZaHhkDAc\">https:\/\/www.youtube.com\/watch?v=-m7ZaHhkDAc<\/a><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Gu\u00eda para el Kit de Juego en 2D - Unity Learn. (s.&nbsp;f.). Unity Learn. <a href=\"https:\/\/learn.unity.com\/tutorial\/2d-game-kit-walkthrough-1\">https:\/\/learn.unity.com\/tutorial\/2d-game-kit-walkthrough-1<\/a><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">M\u00fasica Sin Copyright. (2020, 8 diciembre). MUSICA PARA JUEGOS (Sin copyright) \ufe0f #8 [V\u00eddeo]. YouTube. <a href=\"https:\/\/www.youtube.com\/watch?v=583nbl0MnAk\">https:\/\/www.youtube.com\/watch?v=583nbl0MnAk<\/a><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Pablo. (2013, 28 abril). Musica Benny Hill Show [V\u00eddeo]. YouTube. <a href=\"https:\/\/www.youtube.com\/watch?v=seaG0naD-hI\">https:\/\/www.youtube.com\/watch?v=seaG0naD-hI<\/a><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n: La idea del proyecto es hacer un juego de plataforma 2D algo muy parecido a juegos como Mario Bros, el cual consiste en poder saltar y recoger objetos. Donde la idea es poder hacer todo desde cero, las animaciones, el c\u00f3digo, los escenarios, sin implementar alguna plantilla o paqueteSeguir Leyendo<\/p>\n","protected":false},"author":1981,"featured_media":88982,"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":[1309,30,4332,4247],"tags":[],"class_list":["post-88935","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-computacion-grafica","category-niixer","category-unity","category-video-juegos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>University Adventure, un juego de plataformas 2D hecho desde cero en Unity. &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos<\/title>\n<meta name=\"description\" content=\"Como crear un juego 2D usando Unity desde cero, desde la creaci\u00f3n de las texturas, las animaciones y flujo entre las ventanas\" \/>\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\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"University Adventure, un juego de plataformas 2D hecho desde cero en Unity. &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos\" \/>\n<meta property=\"og:description\" content=\"Como crear un juego 2D usando Unity desde cero, desde la creaci\u00f3n de las texturas, las animaciones y flujo entre las ventanas\" \/>\n<meta property=\"og:url\" content=\"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/\" \/>\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=\"2026-05-27T23:30:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-29T20:31:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/4314c890-4b80-4738-8a6c-65a2db2db56e.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"614\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"brayanb\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"brayanb\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"University Adventure, un juego de plataformas 2D hecho desde cero en Unity. &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","description":"Como crear un juego 2D usando Unity desde cero, desde la creaci\u00f3n de las texturas, las animaciones y flujo entre las ventanas","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\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/","og_locale":"es_ES","og_type":"article","og_title":"University Adventure, un juego de plataformas 2D hecho desde cero en Unity. &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","og_description":"Como crear un juego 2D usando Unity desde cero, desde la creaci\u00f3n de las texturas, las animaciones y flujo entre las ventanas","og_url":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/","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":"2026-05-27T23:30:14+00:00","article_modified_time":"2026-05-29T20:31:28+00:00","og_image":[{"width":1024,"height":614,"url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/4314c890-4b80-4738-8a6c-65a2db2db56e.jpg","type":"image\/jpeg"}],"author":"brayanb","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"brayanb","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/#article","isPartOf":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/"},"author":{"name":"brayanb","@id":"https:\/\/niixer.com\/#\/schema\/person\/1d8e9330a5c1c83afc2e612e69b59f79"},"headline":"University Adventure, un juego de plataformas 2D hecho desde cero en Unity.","datePublished":"2026-05-27T23:30:14+00:00","dateModified":"2026-05-29T20:31:28+00:00","mainEntityOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/"},"wordCount":692,"publisher":{"@id":"https:\/\/niixer.com\/#organization"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/4314c890-4b80-4738-8a6c-65a2db2db56e.jpg","articleSection":["Computaci\u00f3n Gr\u00e1fica","Niixer","Unity","video juegos"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/","url":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/","name":"University Adventure, un juego de plataformas 2D hecho desde cero en Unity. &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","isPartOf":{"@id":"https:\/\/niixer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/#primaryimage"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/4314c890-4b80-4738-8a6c-65a2db2db56e.jpg","datePublished":"2026-05-27T23:30:14+00:00","dateModified":"2026-05-29T20:31:28+00:00","description":"Como crear un juego 2D usando Unity desde cero, desde la creaci\u00f3n de las texturas, las animaciones y flujo entre las ventanas","breadcrumb":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/#primaryimage","url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/4314c890-4b80-4738-8a6c-65a2db2db56e.jpg","contentUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/4314c890-4b80-4738-8a6c-65a2db2db56e.jpg","width":1024,"height":614},{"@type":"BreadcrumbList","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/27\/university-adventure-un-juego-de-plataformas-2d-hecho-desde-cero-en-unity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/niixer.com\/"},{"@type":"ListItem","position":2,"name":"University Adventure, un juego de plataformas 2D hecho desde cero en Unity."}]},{"@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\/1d8e9330a5c1c83afc2e612e69b59f79","name":"brayanb","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/734543f73bad669260316e48be14566df0a808a3c0bf29528300d7e3afe7f5fb?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/734543f73bad669260316e48be14566df0a808a3c0bf29528300d7e3afe7f5fb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/734543f73bad669260316e48be14566df0a808a3c0bf29528300d7e3afe7f5fb?s=96&d=mm&r=g","caption":"brayanb"},"url":"https:\/\/niixer.com\/index.php\/author\/brayanb\/"}]}},"jetpack_featured_media_url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/4314c890-4b80-4738-8a6c-65a2db2db56e.jpg","_links":{"self":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/88935","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\/1981"}],"replies":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/comments?post=88935"}],"version-history":[{"count":9,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/88935\/revisions"}],"predecessor-version":[{"id":89298,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/88935\/revisions\/89298"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media\/88982"}],"wp:attachment":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media?parent=88935"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/categories?post=88935"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/tags?post=88935"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}