iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
Modern Web

菜雞用 Phaser 拾起童年遊戲 系列 第 9

菜雞用 Phaser 拾起童年遊戲 09

做到這裡會發現一件很可怕的事,因為我們的地板不是向官方範例的地形一樣用 staticGroup 產生的,所以他會被我們的主角推動,整個世界大亂啊QQ

Photo by Mehrpouya H on Unsplash

解決方式

這時候我們因為不想讓樓梯被物理碰撞給推動,所以將樓梯的 body 裡面有一個 immovable 屬性改成 false ,並且讓樓梯只有上方可以碰撞,讓主角只有站在上面的可能性。

// 偵測物理碰撞的mapping物件
let groundCollision = {
  none: false,
  up: true,
  down: false,
  left: false,
  right: false
};

...

  // 將初始創立的樓梯都加上不被移動以及只有上方的物理碰撞偵測
  grounds.getChildren().forEach((el) => {
    el.body.immovable = true;
    el.body.checkCollision = groundCollision;
  });

也要讓新產生的樓梯也有這樣的效果,所以也要記得加上去喔!


  grounds.getChildren().forEach((el) => {
    if (el.y < 0) {
      el.destroy();

      ground = grounds
        .create(
          Phaser.Math.Between(0, 600),
          Phaser.Math.Between(1200, 1250),
          "ground"
        )
        .setScale(0.5);
        //加上不被移動以及只有上方的物理碰撞偵測
      ground.body.immovable = true;
      ground.body.checkCollision = groundCollision;
    }
  });

總結

我們大致的已經可以讓遊戲順順地進行囉!
已經可以自由移動,樓梯也會慢慢的上升了,越來越有下樓梯的 feel 了!
但是還沒有加上遊戲分數機制與結束的機制,那我們明天就先來設計遊戲結束的控制吧!

tags: Phaser Game 2020鐵人賽

上一篇
菜雞用 Phaser 拾起童年遊戲 08
下一篇
菜雞用 Phaser 拾起童年遊戲 10
系列文
菜雞用 Phaser 拾起童年遊戲 30

尚未有邦友留言

立即登入留言