1. 程式人生 > >Phaser3入門教程:第一個Phaser3遊戲(中文版)(四)

Phaser3入門教程:第一個Phaser3遊戲(中文版)(四)

  • 平臺

我們剛剛在create函式中加了一段程式碼,讓我們詳細解釋一下,首先是這句:

platforms = this.physics.add.staticGroup();

這句程式碼建立了一個靜態物體組,並賦值給了變數platforms。在Arcade物理模式中,有兩種屬性的物體:動體和靜體。所謂動體就是會移動的物體,它們因為有速度或加速度而移動,也可能被別的物體碰撞後被彈開。靜體就是不會移動的物體,它們有著固定的位置和大小,不會受重力而下降,你也不能給它們一個速度讓它們跑起來。就像地面或平臺,可以讓角色在上面跑動。

那麼什麼是組呢?我們把相似的若干物體放在一各容器,控制多個物體就像控制一個物體一樣。這樣我們就可以檢測這個組與其他物體的碰撞情況。通過組的方法函式create,可以建立組內的子物體,並且自動賦予它們相應的物理屬性,和一些相關的處理。

在我們的平臺組裡我們用create建立了一些平臺:

platforms.create(400, 568, 'ground').setScale(2).refreshBody();

platforms.create(600, 400, 'ground');

platforms.create(50, 250, 'ground');

platforms.create(750, 220, 'ground');

回顧上一節建立的場景:

我們載入了一張名為ground的圖片,這是一個簡單的綠色矩形,400x32畫素,正好可以當我們的平臺用:

第一行的程式碼是在座標(400,568)新建了一個地面(請牢記,圖片的原點是在中心)。問題是我們需要一個和螢幕一樣寬的地面,以避免玩家掉下去。怎麼辦呢?其實我們可以將圖片拉寬到兩倍。呼叫方法setScale(2),圖片就變成我們所需的800x64大小了。緊接著我們必須呼叫refreshBody()方法,因為改變一個靜物後,要告訴系統更新它。

地面處理好了後,下面就是處理其他的平臺:

platforms.create(600, 400, 'ground');

platforms.create(50, 250, 'ground');

platforms.create(750, 220, 'ground');

這個過程和前面相似,只是我們不用再改變圖片的大小了,因為原尺寸就正好。

這三個平臺放在合適的位置,以便玩家的角色能在它們之間跳躍。

下一節我們就要加上玩家的角色了。