phaser游戲開發(fā)筆記

這段時(shí)間突然來(lái)了點(diǎn)興趣,不如做做一些簡(jiǎn)單的小游戲開發(fā)。也算練練手
預(yù)覽地址

0 前提

對(duì)nodejs髓抑,git有一點(diǎn)點(diǎn)了解。

1 游戲引擎的選擇

目標(biāo)是一個(gè)html5小游戲优幸,在這方面可以利用很多成熟的游戲引擎吨拍,比如國(guó)內(nèi)大名鼎鼎的egret,還有一直大名鼎鼎的Cocos2d网杆,當(dāng)然還有在國(guó)外大行其道的phaser羹饰。我自己算是都體驗(yàn)過(guò)這三大引擎吧伊滋,個(gè)人非常喜歡egret,因?yàn)樗旧咸峁┝擞螒蜷_發(fā)的全套工具队秩。這次呢笑旺,我選擇了phaser游戲引擎,因?yàn)檫@個(gè)游戲引擎真的很簡(jiǎn)單馍资,可以說(shuō)什么都不用安裝就可以開始開發(fā)啦筒主。再加上本身就是自己的一次小小的折騰,那就這怎么快鸟蟹,怎么方便怎么來(lái)了乌妙。

2 偷了一下懶,用下別人的高起點(diǎn)

按照官方的教程建钥,下載好phaser庫(kù)文件以后藤韵,還需要去安裝什么xampp,Apache服務(wù)器之類的東西熊经,要不然看不到游戲的開發(fā)效果荠察。當(dāng)然這很重要。不過(guò)確實(shí)很懶奈搜,為了快速上手悉盆,就直接去git clone了人家的一個(gè)項(xiàng)目,搞定一切?( ????? )? get馋吗!焕盟。

git clone https://github.com/lean/phaser-es6-webpack

這是大神的項(xiàng)目,實(shí)現(xiàn)了利用webpack對(duì)phaser游戲項(xiàng)目的開發(fā)和打包宏粤。

這是項(xiàng)目的文件內(nèi)容


git下來(lái)的項(xiàng)目

主要關(guān)注assets資源文件夾和src源代碼文件夾

開發(fā)時(shí)的代碼都在src里面


src文件夾

這里主要關(guān)注main.js這是整個(gè)項(xiàng)目的入口文件脚翘。還有兩個(gè)文件夾sprites和states。一個(gè)簡(jiǎn)單的游戲由各種狀態(tài)組成绍哎,包括加載狀態(tài)来农,游戲狀態(tài),結(jié)束狀態(tài)等等崇堰,在這些狀態(tài)里面通過(guò)各種精靈實(shí)現(xiàn)了畫面的顯示和游戲過(guò)程沃于。


簡(jiǎn)單的幾個(gè)狀態(tài)

如名,boot代表啟動(dòng)時(shí)的狀態(tài)海诲,game是游戲進(jìn)行時(shí)的狀態(tài)繁莹,win表示你贏啦,lose表示你輸啦特幔。

在phaser的每一個(gè)狀態(tài)state里咨演,都有init(), preload(), create(), update()幾個(gè)函數(shù),分別實(shí)現(xiàn)了狀態(tài)的初始化蚯斯,資源加載薄风,游戲角色創(chuàng)建饵较,以及更新。
我的boot就是這么寫的

import Phaser from 'phaser'
import config from '../config'

export default class extends Phaser.State {
  init () {
    this.stage.backgroundColor = config.colorOrange
  }

  preload () {
    this.load.image('logo', './assets/images/an1.png')
    this.load.image('loadbar', 'assets/images/loader-bar.png')
  }
  
  create () {
    let an1 = this.add.sprite(this.game.width / 2, this.game.height / 2, 'logo')
    an1.width = this.game.width
    an1.height = this.game.height
    an1.anchor.set(0.5)
    
    let tx1 = this.add.text(20, 20, 'Go Home', {
      font: '50px',
      fill: config.colorYellow,
      align: 'center'
    })
    let tx2 = this.add.text(50, 70, 'Powered by Phaser Game Engine', {
      font: '10px',
      fill: config.colorYellow,
      align: 'center'
    })
    
    this.asset = this.add.sprite(0, this.game.height, 'loadbar')
    this.asset.width = this.game.width
    this.asset.anchor.setTo(0, 0.5)
    this.load.onLoadComplete.addOnce(this.onLoadComplete, this)
    this.load.setPreloadSprite(this.asset)
    
    this.load.image('mushroom', 'assets/images/mushroom2.png')
    this.load.image('an2', 'assets/images/an2.png')
    this.load.image('an3', 'assets/images/an3.png')
    this.load.image('an4', 'assets/images/an4.png')
    this.load.image('st1', 'assets/images/st1.png')
    this.load.image('st2', 'assets/images/st2.png')
    this.load.image('tr1', 'assets/images/tr1.png')
    this.load.image('tr2', 'assets/images/tr2.png')
    this.load.image('ho1', 'assets/images/ho1.png')
    this.load.image('ho2', 'assets/images/ho2.png')
    this.load.image('gr1', 'assets/images/gr1.jpg')
    // start load
    this.load.start()
  }
  
  onLoadComplete () {
    console.log('加載完成')
    this.state.start('Game')
  }
}

最后遭赂,各種狀態(tài)都會(huì)在main文件中添加到狀態(tài)管理器里面去循诉,然后通過(guò)phaser對(duì)象實(shí)現(xiàn)對(duì)狀態(tài)的控制。

import 'pixi'
import 'p2'
import Phaser from 'phaser'

import BootState from './states/Boot'
import GameState from './states/Game'
import WinState from './states/Win'
import LoseState from './states/Lose'

import config from './config'
import eruda from 'eruda'
eruda.init()

let game

const docElement = document.documentElement
const width = docElement.clientWidth
const height = docElement.clientHeight

window.onload = function () {
  game = new Phaser.Game(width, height, Phaser.CANVAS, 'content', null)
  game.state.add('Boot', BootState, false)
  game.state.add('Game', GameState, false)
  game.state.add('Win', WinState, false)
  game.state.add('Lose', LoseState, false)
  
  game.state.start('Boot')
}

更具體的內(nèi)容就在我的github里面啦https://github.com/zixusir/goHome

寫的不是特別好嵌牺,還希望路過(guò)的江湖大神多多包涵指點(diǎn)打洼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末龄糊,一起剝皮案震驚了整個(gè)濱河市逆粹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炫惩,老刑警劉巖僻弹,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異他嚷,居然都是意外死亡蹋绽,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門筋蓖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)卸耘,“玉大人,你說(shuō)我怎么就攤上這事粘咖◎伎梗” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵瓮下,是天一觀的道長(zhǎng)翰铡。 經(jīng)常有香客問(wèn)我,道長(zhǎng)讽坏,這世上最難降的妖魔是什么锭魔? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮路呜,結(jié)果婚禮上迷捧,老公的妹妹穿的比我還像新娘。我一直安慰自己胀葱,他們只是感情好党涕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巡社,像睡著了一般膛堤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晌该,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天肥荔,我揣著相機(jī)與錄音绿渣,去河邊找鬼。 笑死燕耿,一個(gè)胖子當(dāng)著我的面吹牛中符,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播誉帅,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼淀散,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蚜锨?” 一聲冷哼從身側(cè)響起档插,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亚再,沒想到半個(gè)月后郭膛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氛悬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年则剃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片如捅。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棍现,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镜遣,到底是詐尸還是另有隱情己肮,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布烈涮,位于F島的核電站朴肺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏坚洽。R本人自食惡果不足惜戈稿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讶舰。 院中可真熱鬧鞍盗,春花似錦、人聲如沸跳昼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鹅颊。三九已至敷存,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間堪伍,已是汗流浹背锚烦。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工觅闽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涮俄。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓蛉拙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親彻亲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子孕锄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容