Sistema de movimiento basado en cuadricula
MCE usa un sistema de movimiento basado en cuadricula de tiles construido sobre el Tilemap de Unity. El jugador y los NPCs se mueven un tile a la vez en una cuadricula discreta, con deteccion de colisiones, efectos de terreno y transiciones entre mapas manejados por el sistema de cuadricula.
Componentes principales
GridController
El GridController es el gestor por escena de la cuadricula de tiles. Se encarga de:
- Mantener el mapa de colisiones de la escena actual.
- Rastrear que tiles son transitables, bloqueados o tienen propiedades especiales.
- Manejar consultas de colision basadas en tiles (puede un personaje moverse al tile X,Y?).
- Gestionar datos de tiles para encuentros, teletransportes y terreno especial.
Cada escena tiene un GridController adjunto a la raiz de su cuadricula/tilemap.
MCECharacterController
El MCECharacterController maneja el movimiento de cualquier personaje (jugador o NPC) en la cuadricula:
- Movimiento ajustado a la cuadricula: Los personajes se mueven exactamente un tile por paso.
- Movimiento en 4 direcciones: Arriba, Abajo, Izquierda, Derecha. Sin movimiento diagonal.
- Renderizado de sprites: Actualiza automaticamente la direccion del sprite y la animacion de caminar.
- Verificacion de colisiones: Consulta al
GridControllerantes de cada movimiento. - Velocidad de movimiento: Velocidad de caminata configurable con opcion de correr.
PlayerCharacter
El PlayerCharacter extiende MCECharacterController con caracteristicas especificas del jugador:
- Manejo de entrada (teclado y mando).
- Disparadores de interaccion (presionar el boton de accion mientras se mira hacia un NPC/objeto).
- Conteo de pasos para encuentros.
- Modificadores de velocidad para correr/ir en bicicleta.
- Coordinacion con el monstruo seguidor.
GlobalGridManager
El GlobalGridManager maneja la navegacion entre mapas:
- Gestiona los tiles de teletransporte que hacen transicion entre escenas.
- Maneja la carga aditiva de escenas para mapas conectados.
- Preserva el estado del jugador entre transiciones.
- Gestiona la pantalla de carga / transicion de fundido.
Tipos de tiles
MCE soporta varios comportamientos de tiles:
| Tipo de tile | Descripcion | Implementacion |
|---|---|---|
| Normal | Tile transitable estandar | Por defecto |
| Bloqueado | No se puede caminar sobre el | Capa de tilemap de colision |
| Hierba | Transitable, activa verificaciones de encuentros | Componente EncounterTile |
| Agua | Requiere Surf para atravesar | TileType.Water |
| Cornisa | Solo se puede cruzar en una direccion (saltando hacia abajo) | TileType.Ledge + direccion |
| Puente | Permite caminar sobre otros tiles en una capa diferente | TileType.Bridge |
| Resbaladizo (Hielo) | El personaje se desliza hasta chocar con un obstaculo | TileType.Slippery |
| Cascada | Escalable con MO especifica | TileType.Waterfall |
| Teletransporte | Hace transicion a otra escena | Configuracion de teletransporte |
| Giratorio | Fuerza al personaje a girar en una direccion | TileType.Spinning |
Configurar un mapa
Paso 1: Crear la estructura del Tilemap
Los mapas de MCE usan una jerarquia estandar de Tilemap de Unity:
Grid (componente Grid)
└── Ground (Tilemap, TilemapRenderer, sorting order 0)
└── GroundOverlay (Tilemap, TilemapRenderer, sorting order 1)
└── Collision (Tilemap, TilemapCollider2D)
└── Encounters (componentes EncounterTile)
└── Actors (GameObjects de NPCs)
Paso 2: Pintar el mapa
Use la Tile Palette (Window > 2D > Tile Palette) para pintar su mapa:
- Capa Ground: Terreno base (caminos, hierba, tierra, bordes de agua).
- Capa GroundOverlay: Decoraciones sobre el suelo (flores, rocas, sombras).
- Capa Collision: Marcar tiles intransitables (muros, arboles, rocas).
Paso 3: Anadir el GridController
- Seleccione el GameObject raiz Grid.
- Anade el componente
GridController. - Detectara automaticamente las capas del tilemap y construira el mapa de colisiones.
Paso 4: Configurar SceneInfo
Cada escena de mapa necesita un componente SceneInfo (o un ScriptableObject SceneInfoAsset):
| Campo | Descripcion |
|---|---|
| Scene Name | Nombre visible de la ubicacion (mostrado en el encabezado) |
| Region | A que region pertenece este mapa |
| Scene Tag | Etiquetas para logica del juego (por ejemplo, "Cave", "Town", "Route") |
| BGM | Musica de fondo para este mapa |
| Wild Encounters | Conjunto de encuentros predeterminado para este mapa |
Terreno especial
Puentes
Los puentes permiten a los personajes caminar sobre tiles que normalmente serian intransitables (como agua):
- Cree una capa de tilemap de puente con mayor orden de renderizado.
- Anade tiles de puente donde el camino cruza sobre agua.
- Establezca el
TileTypeenBridgepara esos tiles. - El personaje caminara sobre la capa del puente al pisar sobre el.
La logica del puente maneja el orden Z automaticamente: el personaje se renderiza sobre el agua pero debajo de las barandillas del puente.
Tiles resbaladizos (Hielo)
En tiles de hielo, el personaje se desliza en la direccion en que se mueve hasta que golpea un muro o un tile que no sea de hielo:
- Establezca el
TileTypeenSlipperyen los tiles de hielo. - El
MCECharacterControlleranulara la entrada y continuara la direccion de movimiento. - Anade muros u obstaculos para crear disenos de puzzles de hielo.
Cornisas
Las cornisas son tiles de una sola direccion: el personaje puede saltar hacia abajo pero no puede escalar de vuelta:
- Establezca el
TileTypeenLedgey configure la direccion (la direccion en que salta el personaje). - Se reproduce una animacion corta de salto cuando el personaje cruza la cornisa.
- Las cornisas se usan comunmente para crear atajos en las rutas.
Cascadas
Las cascadas se pueden escalar con la MO o habilidad apropiada:
- Establezca
TileTypeenWaterfallen los tiles de cascada. - Configure la habilidad o MO requerida.
- Cuando el jugador se enfrenta a la cascada y usa la habilidad, el personaje asciende.
Transiciones entre mapas
Configuracion de teletransporte
Para conectar dos mapas:
-
Coloque un tile de teletransporte o un actor de teletransporte en el borde o puerta del mapa de origen.
-
Configure el teletransporte con:
- Target Scene: La escena a cargar.
- Target Position: Donde aparece el jugador en la escena destino (coordenadas de tile).
- Target Direction: Hacia donde mira el jugador despues del teletransporte.
- Transition Type: Fundido, puerta, entrada de cueva, etc.
-
El
GlobalGridManagermaneja la transicion de escena:- Funde la pantalla.
- Descarga la escena actual.
- Carga la escena destino aditivamente.
- Coloca al jugador en la posicion destino.
- Vuelve a mostrar la pantalla.
Conexiones de mapas (sin costuras)
Para mapas que se conectan directamente (por ejemplo, Ruta 1 conecta con Ruta 2 en el borde norte):
- Coloque tiles de teletransporte a lo largo de todo el borde de conexion.
- Configure todos los teletransportes a la misma escena destino con posiciones correspondientes.
- Use un fundido rapido para la transicion.
Configuracion de movimiento del jugador
En el componente PlayerCharacter:
| Campo | Descripcion | Por defecto |
|---|---|---|
| Walk Speed | Tiles por segundo al caminar | 4 |
| Run Speed | Tiles por segundo al correr | 8 |
| Bike Speed | Tiles por segundo en bicicleta | 12 |
| Can Run | Si el jugador puede correr (boton B) | true |
| Has Bike | Si el jugador ha desbloqueado la bicicleta | false |
| Step Counter | Rastrea los pasos totales para encuentros y eclosion de huevos | automatico |
Monstruos seguidores
MCE soporta un sistema de seguidor donde el primer monstruo del equipo del jugador camina detras de el en el mundo:
- El
MonsterFollowerControllergestiona la posicion y sprite del seguidor. - El seguidor sigue la ruta de movimiento del jugador con un retraso de un tile.
- Los sprites de seguidor se configuran por especie en el
MonsterEntry. - El jugador puede interactuar con su seguidor (girar y presionar el boton de accion) para ver un texto de reaccion.
Si una especie de monstruo no tiene un sprite de seguidor de mundo asignado, el seguidor no aparecera. Use el Art Studio para generar hojas de sprites de seguidor, o creelas manualmente como hojas de ciclo de caminata de 4 direcciones.
Mejores practicas
- Mantenga las capas de colision consistentes. Use el mismo tile de colision para todo el terreno intransitable.
- Pruebe las conexiones de teletransporte en ambas direcciones. Asegurese de poder ir de A a B y volver de B a A.
- Use SceneTags para logica de encuentros. En lugar de codificar nombres de mapas, etiquete los mapas como "Cave", "Water", "Forest", etc.
- Optimice mapas grandes. Los tilemaps muy grandes (>200x200) pueden impactar el rendimiento. Considere dividirlos en multiples escenas conectadas.
- Pruebe con mando. El movimiento en cuadricula deberia sentirse responsivo tanto en teclado como en control.