Vamos a cargar los recursos que necesitamos para nuestro juego. Esto se realiza dentro de una función de escena llamada preload
. Phaser buscará automáticamente esta función cuando se inicie y cargará cualquier cosa definida en ella.
Actualmente la función preload
está vacía. Cámbiela a:
function preload ()
{
this.load.image('sky', 'assets/sky.png');
this.load.image('ground', 'assets/platform.png');
this.load.image('star', 'assets/star.png');
this.load.image('bomb', 'assets/bomb.png');
this.load.spritesheet('dude',
'assets/dude.png',
{ frameWidth: 32, frameHeight: 48 }
);
}
Esto cargará 5 recursos: 4 imágenes y un grupo de imágenes (spritesheet). Aunque puede parecer evidente, me gustaría centrarme en el primer parámetro, también conocido como la clave del recurso ('cielo', 'bomba'). Esta cadena es un identificador al recurso y es lo que utilizará en su código cuando cree los elementos en el juego. Se puede usar cualquier cadena de texto válida en JavaScript como clave.
Mostrar una imagen
Para mostrar una imagen tendremos que poner el siguiente código dentro de la función create
:
this.add.image(400, 300, 'sky');
Esta línea se puede encontrar en el archivo part3.html
. Si se carga esta página en un navegador se debe mostrar la pantalla del juego con un cielo azul de fondo:
Los valores 400
y 300
son las coordenadas X e Y de la imagen. ¿Por qué 400 y 300? Esto se debe a que en Phaser 3 todos los elementos del juego están posicionados por defecto en base a su centro. La imagen de fondo tiene un tamaño de 800 x 600 píxels, por lo que si se muestra centrada en 0 x 0 solo se vería su esquina inferior derecha. Si se posiciona en 400 x 300 se ve al completo.
Sugerencia: Se puede usar setOrigin
para cambiar esto. Por ejemplo, el código: this.add.image(0, 0, 'sky').SetOrigin(0, 0)
posicionaría la imagen en la esquina superior izquierda. En Phaser 2 esto se logró a través de la propiedad anchor
pero en Phaser 3 se usan las propiedades originX
y originY
.
El orden en el que se muestran los objetos del juego coincide con el orden en que se crean. Por lo tanto, si desea colocar una estrella sobre el fondo deberá asegurarse de que se haya añadido en segundo lugar, después de la imagen del cielo:
function create ()
{
this.add.image(400, 300, 'sky');
this.add.image(400, 300, 'star');
}
Si se cargara la imagen star
en primer lugar quedaría tapada por la imagen del cielo.