iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 5
0
Modern Web

關於你關於我關於phaser系列 第 5

Day5 第一個遊戲:~加入主角

  • 分享至 

  • xImage
  •  

加入我們的主角
而這裡可以分成三個部分看
先一樣在物理裡面加入新的物件,但這次用的是 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);
  }
}

上一篇
Day4 第一個遊戲:~場景佈置完成
下一篇
Day 6 第一個遊戲:完成遊戲啦
系列文
關於你關於我關於phaser30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言