Crea tu primer juego tipo Fish Eat Fish en Unity: Guía modular paso a paso juego 2D
Tutorial paso a paso
- Introducción
- Enfocado en desarrolladores que quieren aprender a estructurar un prototipo en Unity con aprendizaje progresivo:
- 🐟 Cómo estructurar un prototipo en Unity con aprendizaje progresivo
- Guía para crear juegos tipo Fish Eat Fish con prefabs, scripts y lógica escalable
- Si estás desarrollando un juego en Unity donde el jugador evoluciona al interactuar con enemigos (como Fish Eat Fish), esta guía te ayudará a organizar tu proyecto desde cero. Ideal para quienes buscan modularidad, claridad y reutilización de assets.
- 1.1. Mecánica principal: comer peces más pequeños
Objetivo: El jugador controla un pez que crece al comer peces más pequeños y debe evitar los más grandes.
Implementación:
UsaCollider2DyRigidbody2Dpara detectar colisiones entre peces.
Asigna una propiedadsizeLevela cada pez. Siplayer.sizeLevel > enemy.sizeLevel, se puede comer.
Al comer, aumenta elsizeLeveldel jugador y escala su sprite (transform.localScale).
csharpvoid OnTriggerEnter2D(Collider2D other) { Fish enemy = other.GetComponent<Fish>(); if (enemy != null && enemy.sizeLevel < this.sizeLevel) { Destroy(other.gameObject); this.sizeLevel++; transform.localScale += new Vector3(0.1f, 0.1f, 0); } }
🎮 1.2. Movimiento libre en 2D
Controles:
UsaInput.GetAxis("Horizontal")yInput.GetAxis("Vertical")para mover el pez.
Aplica movimiento conRigidbody2D.velocity.
csharpvoid Update() { float moveX = Input.GetAxis("Horizontal"); float moveY = Input.GetAxis("Vertical"); rb.velocity = new Vector2(moveX, moveY) * speed; }
🐠 1.3. Generación de enemigos
Sistema de spawn:
Crea prefabs de peces con distintos tamaños y comportamientos.
UsaInvokeRepeating()o una Coroutine para generar enemigos aleatorios fuera de la pantalla.
🌊 1.4. Estética y progresión
Ideas para tu estilo:
Usa sprites nostálgicos o celestiales: peces con estrellas, constelaciones, o estilo cartoon.
Añade efectos visuales al crecer: partículas, sonido, cambio de color.
Implementa una barra de experiencia o HUD con SpriteSheets personalizados.
🧩1. 5. Organización y escalabilidad
Tu fortaleza aquí brilla:
CarpetaAssets/FishGame/Prefabs,Scripts/FishLogic,Sprites/FishTypes.
UsaScriptableObjectpara definir tipos de peces con propiedades como velocidad, tamaño, color, comportamiento.
- Organización del proyecto en Unity. Estructura recomendada de carpetas
- Organiza tu proyecto para facilitar el mantenimiento y la expansión:
- Assets/
- ├── Prefabs/
- │ ├── Player/
- │ ├── Enemies/
- │ └── Environment/
- ├── Scripts/
- │ ├── Movement/
- │ ├── Collision/
- │ ├── Evolution/
- │ └── Spawner/
- ├── Sprites/
- │ ├── Fish/
- │ ├── UI/
- │ └── Effects/
- ├── Audio/
- │ ├── SFX/
- │ └── Music/
- ├── Materials/
- ├── Scenes/
- └── ScriptableObjects/
- Scripts base sugeridos
PlayerMovement.cs: Movimiento conRigidbody2D.Fish.cs: Comportamiento y propiedades de cada pez.EnemySpawner.cs: Generación aleatoria de enemigos.GrowthManager.cs: Control de evolución y escala del jugador.
- Lógica de evolución del jugador
- Explicación del sistema de crecimiento.
- Código base comentado.
- El jugador controla un pez que crece al comer enemigos más pequeños. Para esto:
- Asigna una propiedad
sizeLevelal jugador y enemigos. - Usa
OnTriggerEnter2Dpara detectar colisiones. - Si el enemigo tiene menor
sizeLevel, destrúyelo y aumenta el tamaño del jugador. - csharp:
void OnTriggerEnter2D(Collider2D other) { Fish enemy = other.GetComponent<Fish>(); if (enemy != null && enemy.sizeLevel < this.sizeLevel) { Destroy(other.gameObject); this.sizeLevel++; transform.localScale += new Vector3(0.1f, 0.1f, 0); } }
- Sistema de Generación de enemigos
- Crea enemigos con diferentes tamaños y comportamientos:
- Usa prefabs con
sizeLevel, velocidad y dirección. - Genera enemigos con
InvokeRepeating()oCoroutine. - Aumenta la dificultad con el tiempo (enemigos más grandes o rápidos).
- Cómo escalar dificultad.
- Prefabs y comportamiento.
- Feedback visual y sonoro
- Partículas, sonidos, animaciones.
- Haz que el juego se sienta vivo:
- Añade partículas (
ParticleSystem) al comer un enemigo. - Usa sonidos (
AudioSource) para acciones clave. - Cambia el color o animación del jugador al evolucionar.
- Modularidad y escalabilidad
- Reutilización de assets.
- Usa ScriptableObjects para definir tipos de peces.
- Mantén los prefabs independientes y reutilizables.
- Documenta tus scripts con comentarios claros.
- Agrupa assets por función, no solo por tipo visual.
- Estilo visual sugerido
- Ideas cartoon, nostálgicas o celestiales.
- Aprovecha tu estilo cartoon, nostálgico o celestial:
- Diseña peces con estrellas, constelaciones o expresiones caricaturescas.
- Usa fondos marinos con degradados suaves y elementos flotantes.
- Crea una interfaz amigable con íconos personalizados y animaciones sutiles.
- Conclusión
- Invitación a probar el prototipo.
- Enlace a recursos o plantilla si decides compartirla.