Volver al portfolio

Unity · C# · Plataformas 2D · Robot

IO Robot Platform 2D

Prototipo base jugable de plataformas 2D con robot humanoide, cambio entre modo combate y modo movilidad, proyectiles, doble salto, contrarreloj, enemigos, puertas y plataformas móviles.

Resumen técnico

IO Robot Platform 2D es un prototipo base jugable de plataformas 2D desarrollado en Unity con C#. El jugador controla un robot humanoide en vista lateral y debe superar una fase con plataformas, trampas, pinchos, enemigos, puertas elevadizas, objetos interactuables y plataformas móviles.

Su mecánica diferencial es el cambio de forma entre modo combate, representado en amarillo y capaz de disparar proyectiles, y modo movilidad, representado en azul y centrado en mayor velocidad y doble salto. La partida se gana al llegar al final del nivel y se pierde al agotar vidas o tiempo.

Cambio de forma

El personaje alterna entre dos formas con lectura visual clara: amarillo para combate y azul para movilidad. Cada modo modifica las posibilidades del jugador y obliga a decidir cuándo priorizar ataque, velocidad o salto.

Objetivo y condiciones

El objetivo es llegar al final de la fase antes de quedarse sin tiempo o sin vidas. El prototipo combina contrarreloj, daño, enemigos, obstáculos, muerte, reinicio, puntuación, victoria y derrota.

Mi contribución

  • Diseño e implementación de un controlador de plataformas 2D con movimiento, salto, doble salto, caída, gravedad y detección de suelo.
  • Diseño del sistema de cambio entre modo combate y modo movilidad, incluyendo feedback visual por color y diferencias jugables.
  • Implementación de proyectiles, límite de balas, recarga por tiempo, enemigos, trampas, puertas, botones, objetos destructibles y plataformas móviles.
  • Integración de contrarreloj, vidas, puntuación, victoria, derrota, menú principal, pausa, partículas, sonido, música, build y documentación técnica.

Sistemas implementados

  • Movimiento horizontal, salto, doble salto, caída, gravedad y detección de suelo.
  • Cambio entre modo combate y modo movilidad con feedback visual amarillo/azul.
  • Disparo de proyectiles, límite de balas y recarga de balas por tiempo.
  • Enemigos derrotables, daño, vidas, muerte, reinicio, victoria y derrota.
  • Trampas, pinchos, obstáculos, objetos destructibles, botones y puertas elevadizas.
  • Plataformas, plataformas móviles, parallax y cámara de seguimiento.
  • Sistema de contrarreloj, puntuación, niveles, menú principal y pausa.
  • Partículas, sonido, música, UI básica y build jugable para Windows.

Características principales

  • Gameplay de plataformas 2D con vista lateral.
  • Robot humanoide controlado por el jugador.
  • Movimiento horizontal, salto, doble salto, gravedad y detección de suelo.
  • Modo combate con proyectiles y modo movilidad con más velocidad.
  • Feedback visual por forma: amarillo para combate y azul para movilidad.
  • Límite de balas y recarga de balas por tiempo.
  • Enemigos, obstáculos, trampas, pinchos y objetos destructibles.
  • Puertas elevadizas accionables mediante objetos interactuables.
  • Plataformas móviles, cámara y parallax.
  • Contrarreloj, vidas, puntuación, victoria y derrota.
  • Menú principal, pausa, partículas, sonido y música.
  • Build jugable para Windows publicada en GitHub Releases.

Flujo técnico previsto

El flujo jugable conecta movimiento, cambio de forma, interacción, riesgo ambiental y condiciones de partida dentro de una fase funcional.

  1. 01Player MovementLeer input, mover al robot, aplicar salto, doble salto, gravedad y detección de suelo.
  2. 02Mode SwitchingAlternar entre combate y movilidad para habilitar proyectiles o mejorar velocidad y salto.
  3. 03Level InteractionResolver obstáculos, activar puertas, usar plataformas móviles, esquivar trampas y derrotar enemigos.
  4. 04Game StateGestionar contrarreloj, vidas, puntuación, victoria, derrota, reinicio, menú y pausa.

Arquitectura

La lógica se divide en sistemas pequeños para separar jugador, modo de gameplay, disparo, nivel, enemigos, UI, tiempo, puntuación e interacción con el escenario.

  • BulletControl — disparo, proyectiles, límite de balas y recarga.
  • ButtonDoorControl — botones, puertas elevadizas e interacción.
  • CameraControl — seguimiento y control de cámara.
  • DestructibleItem — comportamiento de elementos destructibles.
  • EndLevelControl — detección de final de fase y condición de victoria.
  • EnemyControl — comportamiento de enemigos derrotables.
  • GrabbedItemControl — objetos interactuables o recogibles.
  • LevelManager — control general del nivel.
  • MenuController — navegación por menús y pausa.
  • MobilePlatform — comportamiento de plataformas móviles.
  • Parallax — efecto visual de profundidad en el escenario.
  • PlayerModeController — cambio entre modo combate y modo movilidad.
  • PlayerMovement — movimiento, salto y físicas del jugador.
  • ScoreController — puntuación.
  • TimerControl — contrarreloj y condición de derrota por tiempo.

Tecnologías

  • Unity
  • C#
  • Rigidbody2D
  • Collider2D
  • Tilemap
  • Animator
  • Particle System
  • UI
  • AudioSource
  • Git LFS
  • GitHub Releases

Visuales previstos

El repositorio deja preparados nombres previstos para logo, portada, banner y miniaturas centradas en cambio de modo, plataformas, puertas con botones y combate.

  • iorobot-logo.png
  • iorobot-cover.png
  • iorobot-banner.png
  • iorobot-thumbnail-01-mode-switching.png
  • iorobot-thumbnail-02-platforming.png
  • iorobot-thumbnail-03-door-button-puzzle.png
  • iorobot-thumbnail-04-combat-mode.png

Estado y próximos pasos

Estado actual Prototipo base jugable
  • Añadir más niveles.
  • Añadir más tipos de enemigos y checkpoints.
  • Añadir más objetos interactuables y habilidades para cada forma.
  • Ajustar balance del límite de balas, recarga y contrarreloj.
  • Añadir guardado de progreso y pantallas de victoria/derrota más completas.

Ruta recomendada de revisión

Para revisar técnicamente el proyecto, conviene empezar por los sistemas que conectan tiempo, cambio de modo, proyectiles e interacción con puertas.

  • TimerControl.csContrarreloj, pérdida por tiempo y sincronización del estado de partida.
  • PlayerModeController.csCambio entre modo combate y modo movilidad con feedback visual.
  • BulletControl.csDisparo, proyectiles, límite de balas y recarga por tiempo.
  • ButtonDoorControl.csInteracción con botones, puertas elevadizas y obstáculos del nivel.

Aprendizajes

Este proyecto me permitió trabajar movimiento y salto 2D con Rigidbody2D, detección de suelo, gravedad, plataformas y control de personaje en un entorno de plataformas.

También me ayudó a diseñar un personaje con dos modos de gameplay claramente diferenciados, tanto a nivel mecánico como visual: combate y movilidad.

Además, practiqué gestión de proyectiles con límite y recarga por tiempo, contrarreloj, vidas, victoria, derrota e interacción con puertas, botones, plataformas móviles y objetos destructibles.