加入我們的主角
而這裡可以分成三個部分看
先一樣在物理裡面加入新的物件,但這次用的是 sprite ,代表此物件是動態的,而這邊加入了一些物理特性: setBounce 是指反彈指數,一個反作用力的感覺,參數代表每次的反作用力是落下的多少
//在create()裡面
player = this.physics.add.sprite(100, 450, 'dude');
player.setBounce(0.2);
player.setCollideWorldBounds(true);
這邊則是設定主角的動態方式,前面有講到,我們是用 sprite sheet ,他是一連串的圖片合成的一張圖片,而我們要設定在什麼時候要顯示那些圖片,所以會有一個 key 值,代表當這個key值被使用時,會依照後面的設定去顯示圖片
//在create()裡面
this.anims.create({
key: 'left',
//往左的圖片是0~3
frames: this.anims.generateFrameNumbers('dude', { start: 0, end: 3 }),
frameRate: 10,
//-1代表會重複loop
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
});
並設定重力與各物件的物理(碰撞)關係,我們要設定重力的方向與值,可以做實驗改成 X 軸有重力就可以瞭解設定重力的感覺,再來要設定物件之間的關係,不然對於他們來說,他們都只是會面上的一張圖片,所以要設定他們彼此之間的關係
//在create()裡面
this.physics.add.collider(player, platforms);
終於可以來讓我們的角色動起來啦
先對我們的鍵盤做監聽事件
//create()裡面
cursors = this.input.keyboard.createCursorKeys();
再來就是當我們的鍵盤的鍵被觸發時,角色要做什麼事情
向左向右會移動多少的距離, setVelocityX 、 setVelocityY 裡面的參數是在畫面上移動的關距離,裡面的參數是相對於 x 軸與 y 軸的正負移動的,例如向左 160 就是 x 軸移動 -160 的位移 (向左 160px / sec ) ,並且會改變角色的狀態去讓他跑前面設定的圖片
而跳起來則是偵測:向上鍵被按與角色的body碰觸到地板時才會觸發
function update(){
if (cursors.left.isDown) {
player.setVelocityX(-160);
player.anims.play('left', true);
} else if (cursors.right.isDown) {
player.setVelocityX(160);
player.anims.play('right', true);
} else {
player.setVelocityX(0);
player.anims.play('turn');
}
if (cursors.up.isDown && player.body.touching.down) {
player.setVelocityY(-330);
}
}