當前位置:編程學習大全網 - 源碼下載 - phaser學習總結之phaser入門教程

phaser學習總結之phaser入門教程

最近公司做項目的時候正好使用到phaser,在這裏做壹下自己整理出來的壹些心得,方便大家參考,phaser這壹個遊戲引擎通常是做2d遊戲的,入門也非常簡單,只需妳會壹點的javascript,但是妳想做壹個比較完美的遊戲的話,那麽光靠壹點點的javascript是遠遠不夠的,本篇博客將快速帶妳入門phaser。

phaser是壹款快速,免費及開源HTML5遊戲框架,它支持WebGL和Canvas兩種渲染模式,可以在任何web瀏覽器環境下運行,遊戲可以通過第三方工具轉為iOS、Android 支持的 Native APP,允許使用 JavaScript 和 TypeScript 進行開發。

phaser中的壹切都是從Game類開始,所以我們暫時將Game類當作phaser的中心吧!當妳new了壹個Game之後,game中的很多屬性就有了,phaser的核心可以用如下這張圖表示。

這裏我們經常使用的對象有load,time,world,input,camera。

在開發中,我們經常使用方式五創建phaser對象,當然妳也可以根據自己的喜好選擇,就看妳是喜歡函數創建還是對象創建。

畫布寬度,數字或字符串類型可選參數,默認為800,如果以字符串的形式給出,該值必須在0到100之間,為百分比,如果沒有指定父容器,則默認為瀏覽器窗口

畫布高度

指定渲染機制,值可以是Phaser.WebGL,Phaser.Canvas,Phaser.AUTO(自動嘗試使用WebGL,如果瀏覽器或設備不支持,使用canvas)或者Phaser.HEADLESS(不進行渲染)

想插入遊戲畫布的DOM元素,畫布的父元素,可選值為DOM本身或者是id,如果為空字符串,畫布將被插入到body元素中

默認的狀態對象,對象類型,可以是null,也可以是Phaser.state函數(初始化,預加載,創建,更新,渲染)

畫布背景是否透明,布爾值,默認為false

是否繪制為平滑紋理,布爾值,默認為true

壹個物理配置對象,在Physics world創建時傳遞,對象默認為null

參考文檔: /

phaser小站: /example-detail-422.html

社區: /

接下來我們通過phaser實現壹個小遊戲以及快速入門,見識下phaser開發遊戲的功能有多麽的強大,需要說明的是,這個就是phaser官方入門的案例,廢話不多說,直接上源碼。

在這裏,我們已經創建了遊戲場景和加載了遊戲場景,但是我們看到壹片黑的,接下來我們加點東西。

我們看到屏幕的左上角出現了壹顆星星,但是還是缺點什麽,這種效果依然不是我們想要的效果,接下來我們讓它更具體化。

在這裏我們已經將場景加入進來了以及開啟了物理引擎,當然這只是為後面做準備,然後我們創建了天空,大地和兩個平板。大地和平板的位置定位,我們是通過坐標來進行的,

其中,大地和兩個平板都被加到了platforms這個組中,這個組我們為它啟動了物理屬性,然後我們設置了大地和兩個平板是不能動的,這樣他們就不會由於撞擊被改變位置。接下來,我們來加入壹個小人,這個小人也是我們遊戲的主角。

dude.png圖片

同樣是通過game.add.sprite將精靈加入進來,但是大家仔細看看dude.png這張資源圖片,這是壹個幀動畫序列,裏面包含了主角左移和右移的動畫幀。我們同樣給它開啟了物理屬性,然後設置了它的彈性和重力。player.body.collideWorldBounds = true;這句話設置了它會與邊界進行碰撞,這就是為什麽主角落下的時候,到遊戲區域邊界就不會掉下去,大家可以把這句話註釋掉再運行,看看會是什麽情況。在這裏,我們還為小人添加了兩個動畫,壹個是向左移動,壹個是向右移動,分別指定了響應的動畫幀,這也是為後續的動畫做準備。

是不是很驚訝?要讓主角站在地上,只要在update中加上壹句,game.physics.arcade.collide(player, platforms);就可以了,這句話表示,檢測主角與platforms組的碰撞,而大地正是在platforms組中,這樣,主角就不會穿過大地了。同樣地,當主角與兩個平板碰撞時,也不會穿過了。接下來我們讓主角運動。

我們希望讓主角在按下方向左鍵的時候,向左移動,按下方向右鍵的時候,向右移動,為了實現這壹功能,我們又定義了壹個cursors,我們通過cursors = game.input.keyboard.createCursorKeys();來獲取系統的鍵盤輸入對象。然後,我們在update中,通過cursors.left.isDown來判斷用戶是否按下了鍵盤左鍵,如果按下了,我們給主角設置壹個速度,然後播放左移的動畫,方向右鍵的邏輯是壹樣的。如果方向左鍵和右鍵都沒有按下,那麽我們就通過player.frame來設置小人停在第4幀。小人的跳躍是通過方向上鍵來實現的,但是這裏有壹個條件,就是小人在空中的時候,不允許跳躍,所以,加上了壹個player.body.touching.down的判斷條件。

在create中,我們又創建了壹個stars的組,在這個組中,添加了星星,然後設置了它們的重力,隨機設置了彈性,所以它們掉落的時候,碰到平板或者地面,會彈起不同的高度。同樣,星星也不能穿過地面,所以在update中,添加了碰撞檢測。

還有壹層碰撞檢測就是小人和星星的碰撞,當主角和星星發生碰撞的時候,需要讓星星消失,這時候,再添加碰撞檢測的時候,我們還添加了壹個回調函數collectStar,在這裏面,我們的player和star都會作為參數傳遞進來,通過調用star.kill();將星星銷毀。

  • 上一篇:肥城的公共文化場所於4月20日恢復開放。
  • 下一篇:java用什麽軟件編程最好
  • copyright 2024編程學習大全網