Saltar al contenido principal

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 GridController antes 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 tileDescripcionImplementacion
NormalTile transitable estandarPor defecto
BloqueadoNo se puede caminar sobre elCapa de tilemap de colision
HierbaTransitable, activa verificaciones de encuentrosComponente EncounterTile
AguaRequiere Surf para atravesarTileType.Water
CornisaSolo se puede cruzar en una direccion (saltando hacia abajo)TileType.Ledge + direccion
PuentePermite caminar sobre otros tiles en una capa diferenteTileType.Bridge
Resbaladizo (Hielo)El personaje se desliza hasta chocar con un obstaculoTileType.Slippery
CascadaEscalable con MO especificaTileType.Waterfall
TeletransporteHace transicion a otra escenaConfiguracion de teletransporte
GiratorioFuerza al personaje a girar en una direccionTileType.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:

  1. Capa Ground: Terreno base (caminos, hierba, tierra, bordes de agua).
  2. Capa GroundOverlay: Decoraciones sobre el suelo (flores, rocas, sombras).
  3. Capa Collision: Marcar tiles intransitables (muros, arboles, rocas).

Paso 3: Anadir el GridController

  1. Seleccione el GameObject raiz Grid.
  2. Anade el componente GridController.
  3. 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):

CampoDescripcion
Scene NameNombre visible de la ubicacion (mostrado en el encabezado)
RegionA que region pertenece este mapa
Scene TagEtiquetas para logica del juego (por ejemplo, "Cave", "Town", "Route")
BGMMusica de fondo para este mapa
Wild EncountersConjunto de encuentros predeterminado para este mapa

Terreno especial

Puentes

Los puentes permiten a los personajes caminar sobre tiles que normalmente serian intransitables (como agua):

  1. Cree una capa de tilemap de puente con mayor orden de renderizado.
  2. Anade tiles de puente donde el camino cruza sobre agua.
  3. Establezca el TileType en Bridge para esos tiles.
  4. 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:

  1. Establezca el TileType en Slippery en los tiles de hielo.
  2. El MCECharacterController anulara la entrada y continuara la direccion de movimiento.
  3. 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:

  1. Establezca el TileType en Ledge y configure la direccion (la direccion en que salta el personaje).
  2. Se reproduce una animacion corta de salto cuando el personaje cruza la cornisa.
  3. Las cornisas se usan comunmente para crear atajos en las rutas.

Cascadas

Las cascadas se pueden escalar con la MO o habilidad apropiada:

  1. Establezca TileType en Waterfall en los tiles de cascada.
  2. Configure la habilidad o MO requerida.
  3. 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:

  1. Coloque un tile de teletransporte o un actor de teletransporte en el borde o puerta del mapa de origen.

  2. 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.
  3. El GlobalGridManager maneja 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:

CampoDescripcionPor defecto
Walk SpeedTiles por segundo al caminar4
Run SpeedTiles por segundo al correr8
Bike SpeedTiles por segundo en bicicleta12
Can RunSi el jugador puede correr (boton B)true
Has BikeSi el jugador ha desbloqueado la bicicletafalse
Step CounterRastrea los pasos totales para encuentros y eclosion de huevosautomatico

Monstruos seguidores

MCE soporta un sistema de seguidor donde el primer monstruo del equipo del jugador camina detras de el en el mundo:

  • El MonsterFollowerController gestiona 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.
Sprites de seguidor

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

  1. Mantenga las capas de colision consistentes. Use el mismo tile de colision para todo el terreno intransitable.
  2. Pruebe las conexiones de teletransporte en ambas direcciones. Asegurese de poder ir de A a B y volver de B a A.
  3. Use SceneTags para logica de encuentros. En lugar de codificar nombres de mapas, etiquete los mapas como "Cave", "Water", "Forest", etc.
  4. Optimice mapas grandes. Los tilemaps muy grandes (>200x200) pueden impactar el rendimiento. Considere dividirlos en multiples escenas conectadas.
  5. Pruebe con mando. El movimiento en cuadricula deberia sentirse responsivo tanto en teclado como en control.