Crear el personaje para nuestro juego en unity isometrico
Vamos a crear un personaje básico que se mueva por el mapa isométrico y que no pueda salirse del borde.
Índice
🎯 ¿Qué vamos a hacer en este paso?
- Crear un personaje (jugador) con sprite básico.
- Escribir el código para que se mueva en vista isométrica.
- Limitar el movimiento al tamaño del mapa (por ejemplo: 10x10 tiles).
- Ver que se mueva sobre el mapa que ya generaste.
✅ Paso 1: Crear el personaje
- Hacé clic derecho en la jerarquía →
Create Empty→ Renombralo aJugador. - Con
Jugadorseleccionado:- Click en
Add Component→ buscá y agregáSprite Renderer. - En el campo Sprite, elegí algo simple como el cuadrado de Unity (el mismo que usaste para los tiles).
- Cambiale el color (por ejemplo rojo o verde) para distinguirlo del suelo.
- Click en
- Escalalo un poco (por ejemplo, X: 0.9, Y: 0.9) para que no tape todo el tile.
✅ Paso 2: Crear el script de movimiento
- En la carpeta
Scripts, creá un nuevo archivo llamadoMovimientoJugador.cs. - Pegá este código completo y leelo con calma porque te explico todo:
using UnityEngine;
public class MovimientoJugador : MonoBehaviour
{
public float velocidad = 5f;
// Tamaño del mapa (¡ajustalo al mismo tamaño que el generado!)
public int anchoMapa = 10;
public int altoMapa = 10;
// Posición lógica del jugador en el grid
private int posX = 0;
private int posY = 0;
void Start()
{
// Colocar al jugador en el centro del mapa al empezar
posX = anchoMapa / 2;
posY = altoMapa / 2;
ActualizarPosicion();
}
void Update()
{
// Detectar input (teclas flechas o WASD)
int dx = 0;
int dy = 0;
if (Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.UpArrow)) dy++;
if (Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.DownArrow)) dy--;
if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow)) dx--;
if (Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow)) dx++;
// Si se quiere mover
if (dx != 0 || dy != 0)
{
int nuevaX = posX + dx;
int nuevaY = posY + dy;
// Validar límites del mapa
if (nuevaX >= 0 && nuevaX < anchoMapa && nuevaY >= 0 && nuevaY < altoMapa)
{
posX = nuevaX;
posY = nuevaY;
ActualizarPosicion();
}
}
}
// Convierte coordenadas de tile a posición isométrica y mueve al personaje
void ActualizarPosicion()
{
Vector3 nuevaPosicion = new Vector3(
(posX - posY) * 1f,
(posX + posY) * 0.5f,
0f
);
transform.position = nuevaPosicion;
}
}
✅ Paso 3: Conectar todo
- Arrastrá el script
MovimientoJugadoral objetoJugador. - En el Inspector, asegurate de que los valores
anchoMapayaltoMapasean los mismos que los que usaste para generar el suelo (por ejemplo, 10). - ¡Listo!
🎮 Ahora:
- Presioná Play ▶️
- Usá las teclas WASD o flechas para moverte en el tablero.
- El jugador se mueve en vista isométrica y no puede salirse del mapa 🎉