En esta sección aprenderás cómo cargar y mostrar imágenes en tu juego usando Phaser. Este es un paso fundamental, ya que la mayoría de los juegos dependen de recursos visuales para representar personajes, fondos, objetos y más.
Conceptos Clave
- Assets: Son los recursos gráficos (imágenes, sprites, fondos) que usas en tu juego.
- Preload: Fase donde se cargan los assets antes de que el juego comience.
- Scene: Una escena en Phaser es una parte del juego (menú, nivel, pantalla de game over, etc.).
- Métodos de carga y visualización: Phaser proporciona funciones específicas para cargar y mostrar imágenes.
Flujo Básico para Cargar y Mostrar Imágenes
- Preparar los archivos de imagen: Asegúrate de tener tus imágenes en una carpeta accesible (por ejemplo,
assets/
). - Cargar las imágenes en la escena: Utiliza el método
this.load.image
en la funciónpreload()
de tu escena. - Mostrar las imágenes en pantalla: Usa
this.add.image
en la funcióncreate()
de tu escena.
Ejemplo Práctico Paso a Paso
Supongamos que tienes una imagen llamada player.png
en la carpeta assets/
.
- Estructura de Archivos
Carpeta/Archivo | Descripción |
---|---|
index.html | Archivo principal HTML |
main.js | Código principal de Phaser |
assets/player.png | Imagen del jugador |
- Código de Ejemplo
class MyGame extends Phaser.Scene { preload() { // Cargar la imagen con una clave identificadora ('player') this.load.image('player', 'assets/player.png'); } create() { // Mostrar la imagen en el centro de la pantalla // Parámetros: (x, y, clave de la imagen) this.add.image(400, 300, 'player'); } } const config = { type: Phaser.AUTO, width: 800, height: 600, scene: MyGame }; const game = new Phaser.Game(config);
Explicación del Código
- preload(): Aquí se cargan todos los recursos necesarios antes de que la escena comience. Usamos
this.load.image('player', 'assets/player.png')
para cargar la imagen y asignarle la clave'player'
. - create(): Una vez que los recursos están cargados, se ejecuta esta función. Usamos
this.add.image(400, 300, 'player')
para mostrar la imagen en la posición (400, 300) de la pantalla. - config: Configuración básica del juego, incluyendo el tamaño de la pantalla y la escena a usar.
Tabla de Métodos Comunes para Imágenes
Método | Descripción | Ejemplo de uso |
---|---|---|
this.load.image |
Carga una imagen en la fase preload | this.load.image('fondo', 'assets/bg.png') |
this.add.image |
Añade una imagen a la escena | this.add.image(100, 200, 'fondo') |
setScale |
Cambia el tamaño de la imagen | img.setScale(0.5) |
setOrigin |
Cambia el punto de origen de la imagen | img.setOrigin(0.5, 0.5) |
setAlpha |
Cambia la transparencia de la imagen | img.setAlpha(0.8) |
Ejercicio Práctico
Objetivo:
Carga dos imágenes diferentes y muéstralas en posiciones distintas de la pantalla. Cambia el tamaño de una de ellas usando setScale
.
Instrucciones
- Descarga dos imágenes y colócalas en la carpeta
assets/
(por ejemplo,star.png
yenemy.png
). - Modifica el código para cargar ambas imágenes.
- Muestra ambas imágenes en la pantalla, una en la esquina superior izquierda y otra en la esquina inferior derecha.
- Haz que la imagen de la estrella sea más pequeña usando
setScale
.
Solución
class MyGame extends Phaser.Scene { preload() { this.load.image('star', 'assets/star.png'); this.load.image('enemy', 'assets/enemy.png'); } create() { // Mostrar la estrella en la esquina superior izquierda y reducir su tamaño let star = this.add.image(50, 50, 'star'); star.setScale(0.5); // Mostrar el enemigo en la esquina inferior derecha let enemy = this.add.image(750, 550, 'enemy'); } } const config = { type: Phaser.AUTO, width: 800, height: 600, scene: MyGame }; const game = new Phaser.Game(config);
Explicación
star.setScale(0.5)
reduce el tamaño de la imagen de la estrella a la mitad.- Las posiciones
(50, 50)
y(750, 550)
colocan las imágenes cerca de las esquinas de la pantalla.
Errores Comunes y Consejos
Error Común | Solución/Consejo |
---|---|
La imagen no aparece en pantalla | Verifica la ruta y el nombre del archivo. |
Error: "Texture key not found" | Asegúrate de que la clave usada en add.image coincide con la de load.image . |
Imagen demasiado grande o pequeña | Usa setScale para ajustar el tamaño. |
Imagen no centrada como esperabas | Usa setOrigin(0.5, 0.5) para centrar el punto de origen. |
Resumen
- Aprendiste a cargar imágenes usando
this.load.image
en la fasepreload
. - Mostraste imágenes en pantalla con
this.add.image
en la fasecreate
. - Ajustaste la posición y el tamaño de las imágenes.
- Practicaste con un ejercicio para reforzar el aprendizaje.
¡Ahora ya puedes llenar tu juego de imágenes y personajes! En la siguiente sección aprenderás a trabajar con texto para mostrar información en pantalla.
Phaser - Desarrollo de Juegos con JavaScript
Módulo 1: Introducción al Desarrollo de Juegos y Phaser
- ¿Qué es el Desarrollo de Juegos?
- Descripción general de Phaser
- Configurando tu Entorno de Desarrollo
- Tu Primer Proyecto con Phaser
Módulo 2: Fundamentos de Phaser
- Entendiendo el Bucle de Juego
- Configuración del Juego y Escenas
- Cargando y Mostrando Imágenes
- Trabajando con Texto
- Manejo de Entrada (Teclado y Ratón)
Módulo 3: Sprites y Animación
- ¿Qué son los Sprites?
- Añadiendo y Moviendo Sprites
- Fundamentos de Animación de Sprites
- Grupos de Sprites y Gestión
Módulo 4: Física e Interactividad en el Juego
- Introducción a la Física en Phaser
- Habilitando Física en Sprites
- Colisiones y Superposiciones
- Objetos Interactivos y Eventos
Módulo 5: Mundo del Juego y Cámara
- Creando Tilemaps y Mundos de Juego
- Desplazamiento y Control de Cámara
- Capas y Gestión de Profundidad
Módulo 6: Audio e Interfaz de Usuario
Módulo 7: Arquitectura del Juego y Gestión de Estados
- Organizando el Código del Juego
- Gestionando Múltiples Escenas
- Guardando y Cargando el Estado del Juego
Módulo 8: Características Avanzadas de Jugabilidad
- Efectos de Partículas
- Tweens y Animaciones
- Temporizadores y Eventos Retardados
- IA y Comportamiento de Enemigos