Ya tenemos algunas plataformas tentadoras y encantadoras, pero nadie para correr alrededor de ellas. Vamos a cambiar eso.
Crea una nueva variable llamada player y a├▒ade el siguiente c├│digo a la funci├│n create. Puedes ver esto en el archivo part5.html:
player = this.physics.add.sprite(100, 450, 'dude');
player.setBounce(0.2);
player.setCollideWorldBounds(true);
this.anims.create({
key: 'left',
frames: this.anims.generateFrameNumbers('dude', { start: 0, end: 3 }),
frameRate: 10,
repeat: -1
});
this.anims.create({
key: 'turn',
frames: [ { key: 'dude', frame: 4 } ],
frameRate: 20
});
this.anims.create({
key: 'right',
frames: this.anims.generateFrameNumbers('dude', { start: 5, end: 8 }),
frameRate: 10,
repeat: -1
});
En este código se están haciendo dos cosas: la creación de un Sprite con físicas y algunas animaciones.
Sprite con físicas
La primera parte del c├│digo crea el sprite:
player = this.physics.add.sprite(100, 450, 'dude');
player.setBounce(0.2);
player.setCollideWorldBounds(true);
Esto crea un nuevo sprite llamado player, a 100 x 450 p├¡xeles desde la parte inferior del juego. El sprite se cre├│ a trav├®s del sistema de f├¡sicas (this.physics.add), lo que significa que tiene un cuerpo de f├¡sica din├ímica por defecto.
Despu├®s de crear el sprite se le da un ligero valor de rebote de 0.2. Esto significa que cuando aterrice despu├®s de saltar, rebotar├í ligeramente. Tambi├®n se indica que colisione con los l├¡mites del juego. Los l├¡mites, por defecto, est├ín fuera de las dimensiones del juego. Como configuramos el juego para que sea de 800 x 600, el personaje no podr├í estar fuera de este ├írea. Esto evitar├í que pueda correr o saltar fuera de los bordes de la pantalla.
Animaciones
Si vuelves a la función preload verás que 'dude' se cargó como una hoja de sprites, no como una imagen. Esto es porque contiene partes de una animación (fotogramas). Así es como se ve la hoja completa:

Hay 9 fotogramas en total, 4 para correr a la izquierda, 1 para mirar hacia la cámara y 4 para correr hacia la derecha. Nota: Phaser admite girar sprites para guardar fotogramas de animación, pero por ahora en este tutorial seguiremos usando la vieja escuela.
Definimos dos animaciones, 'left' y 'right'. La animaci├│n left es:
this.anims.create({
key: 'left',
frames: this.anims.generateFrameNumbers('dude', { start: 0, end: 3 }),
frameRate: 10,
repeat: -1
});
La animaci├│n 'left' usa los fotogramas 0, 1, 2 and 3 y se ejecuta a una velocidad de 10 fotogramas por segundo. El valor'repeat -1' indica que la animaci├│n debe volver a empezar cuando termine.
Este es nuestro ciclo de ejecución estándar y se repetirá para correr en la dirección opuesta, usando la tecla 'derecha' y una final para 'girar'.
Información adicional: En Phaser 3 el Administrador de Animaciones es un sistema global. Las animaciones están disponibles globalmente para todos los elementos del juego. Comparten los datos de animación base mientras administran sus propias líneas de tiempo. Esto permite definir una animación una sola vez y aplicarla a tantos elementos del juego como sea necesario. Esto es diferente a Phaser 2, donde las animaciones pertenecían específicamente a los objetos de juego en los que fueron creados.