開始遊戲開發階段

想辦法開始編寫自己的遊戲嗎?Phaser可能是您正在尋找的遊戲開發框架。...

Phaser是一個建立2D影片遊戲的框架。它使用html5canvas來顯示遊戲,JavaScript來運行遊戲。使用Phaser而不是vanilla JavaScript的好處是,它有一個廣泛的庫,可以完成影片遊戲的大部分物理特性,使您能夠集中精力設計遊戲本身。

phaser featured

Phaser縮短了開發時間,簡化了工作流程。讓我們學習如何用Phaser建立一個基本遊戲。

為什麼要用phaser開發?

Phaser與其他視覺化程式語言類似,因為程式基於迴圈更新。Phaser有三個主要階段:預載入、建立和更新。

在preload中,遊戲的資產被上傳並提供給遊戲。

建立初始化遊戲和所有開始遊戲元素。每一個功能在遊戲開始時執行一次。

另一方面,更新在整個遊戲中迴圈執行。它是更新遊戲元素以使其具有互動性的主力軍。

使用phaser設定開發遊戲的系統

儘管Phaser在HTML和JavaScript上執行,但遊戲實際上是在伺服器端執行的,而不是客戶端。這意味著您需要在本地主機上運行遊戲。運行遊戲伺服器端允許您的遊戲訪問程式外的其他檔案和資產。如果您還沒有設定本地主機,我建議您使用XAMPP來設定本地主機。

下面的程式碼將幫助您啟動並執行。它建立了一個基本的遊戲環境。

<html> <head> <script src="//cdn.jsdelivr.net/npm/[email protected]/dist/phaser.js"></script> </head> <body> <script> var config = { type: Phaser.AUTO, backgroundColor: 0xCCFFFF, width: 600, height: 600, physics: { default: 'arcade' }, scene: { preload: preload, create: create } }; var gamePiece; var game = new Phaser.Game(config); function preload(){ this.load.image('gamePiece', 'img/gamePiece.png'); } function create(){ gamePiece = this.physics.add.sprite(270, 450, 'gamePiece'); } </script> </body></html>

要運行遊戲,需要將名為“gamePiece”的PNG影象儲存到本地主機上的“img”資料夾中。為簡單起見,本例使用60xgame de60px橙色正方形。你的遊戲應該是這樣的:

basic phaser game

如果遇到問題,請使用瀏覽器的偵錯程式找出問題所在。即使缺少一個字元也會造成嚴重的破壞,但通常情況下,偵錯程式會捕獲這些小錯誤。

解釋設定程式碼

到目前為止,遊戲什麼都沒做。但我們已經覆蓋了很多領域!讓我們更深入地看看程式碼。

要執行Phaser遊戲,需要匯入Phaser庫。我們在3號線上做這個。在本例中,我們連結到原始碼,但您可以將其下載到本地主機並引用該檔案。

到目前為止,大部分程式碼都配置了遊戲環境,變數config儲存了這些環境。在我們的示例中,我們正在設定一個背景為600px×600px的藍色(十六進位制色碼中的CCFFFF)的移相器遊戲。目前,遊戲物理設定為arcade,但Phaser提供了不同的物理。

最後,scene告訴程式在遊戲開始前執行preload函式和create函式來啟動遊戲。所有這些資訊都會傳遞給名為game的遊戲物件。

相關:6款最適合程式設計和編碼的膝上型電腦

程式碼的下一部分是遊戲真正形成的地方。預載入功能是你想要初始化任何你需要運行遊戲的東西。在我們的例子中,我們已經預裝了遊戲的圖片。image的第一個引數命名我們的影象,第二個引數告訴程式在哪裡找到影象。

在create函式中,gamePiece影象被新增到遊戲中。第29行說,我們正在新增的影象遊戲件作為一個精靈270px左和450px從左上角下來,我們的遊戲區。

讓我們的棋子動起來

到目前為止,這還不能稱為遊戲。首先,我們不能移動我們的棋子。為了能夠改變我們遊戲中的東西,我們將不得不新增一個更新功能。我們還必須調整config變數中的場景,以告訴遊戲更新遊戲時要執行哪個函式。

新增更新函式

配置中的新場景:

scene: { preload: preload, create: create, update: update}

接下來,在create函式下面新增一個update函式:

function update(){}

獲取關鍵輸入

為了讓玩家用箭頭鍵控制遊戲,我們必須新增一個變數來跟蹤玩家按下的鍵。在下面宣告gamePieces的地方宣告一個名為keyInputs的變數。在那裡宣告它將允許所有函式訪問新變數。

var gamePiece;var keyInputs;

在create函式中建立遊戲時,應該初始化keyInput變數。

function create(){ gamePiece = this.physics.add.sprite(270, 450, 'gamePiece'); keyInputs = this.input.keyboard.createCursorKeys();}

現在在更新功能中,我們可以檢查玩家是否正在按箭頭鍵,如果是,則相應地移動遊戲塊。在下面的例子中,遊戲塊被移動了2倍,但是你可以使這個數字變大或變小。一次移動1px似乎有點慢。

function update(){ if(keyInputs.left.isDown){ gamePiece.x = gamePiece.x - 2; } if(keyInputs.right.isDown){ gamePiece.x = gamePiece.x + 2; } if(keyInputs.up.isDown){ gamePiece.y = gamePiece.y - 2; } if(keyInputs.down.isDown){ gamePiece.y = gamePiece.y + 2; }}

遊戲現在有了一個可移動的角色!但要真正成為一場比賽,我們需要一個目標。讓我們新增一些障礙。躲避障礙是8位時代很多遊戲的基礎。

為遊戲新增障礙

這個程式碼示例使用了兩個障礙精靈,分別稱為obstacle1和obstacle2。obstacle1是藍色的正方形,obstacle2是綠色的。每個影象都需要像遊戲精靈一樣預載入。

function preload(){ this.load.image('gamePiece', 'img/gamePiece.png'); this.load.image('obstacle1', 'img/obstacle1.png'); this.load.image('obstacle2', 'img/obstacle2.png');}

然後每個障礙精靈都需要在create函式中初始化,就像遊戲一樣。

function create(){ gamePiece = this.physics.add.sprite(270, 450, 'gamePiece'); keyInputs = this.input.keyboard.createCursorKeys(); obstacle1 = this.physics.add.sprite(200, 0, 'obstacle1'); obstacle2 = this.physics.add.sprite(0, 200, 'obstacle2');}

使障礙物移動

這次要移動棋子,我們不想使用玩家輸入。相反,讓我們讓一個從上到下移動,另一個從左到右移動。為此,請向update函式新增以下程式碼:

obstacle1.y = obstacle1.y + 4;if(obstacle1.y > 600){ obstacle1.y = 0; obstacle1.x = Phaser.Math.Between(0, 600);} obstacle2.x = obstacle2.x + 4;if(obstacle2.x > 600){ obstacle2.x = 0; obstacle2.y = Phaser.Math.Between(0, 600);}

上面的程式碼將把障礙物1移到螢幕下方,障礙物2移到遊戲區域,每幀4px。一旦一個正方形離開螢幕,它就會在一個新的隨機點被移回對面。這將確保玩家總是有一個新的障礙。

phaser game without collision detection

檢測碰撞

但我們還沒有完成。你可能已經注意到我們的球員可以透過障礙。我們需要讓遊戲檢測玩家何時碰到障礙物並結束遊戲。

Phaser物理庫有一個對撞機探測器。我們只需要在create函式中初始化它。

this.physics.add.collider(gamePiece, obstacle1, function(gamePiece, obstacle1){ gamePiece.destroy(); obstacle.destroy(); obstacle2.destroy();});this.physics.add.collider(gamePiece, obstacle2, function(gamePiece, obstacle2){ gamePiece.destroy(); obstacle.destroy(); obstacle2.destroy();});

對撞機方法需要三個引數。前兩個引數標識哪些物件正在碰撞。上面,我們有兩個對撞機。第一個碰撞器檢測遊戲件何時與障礙物1發生碰撞,第二個碰撞器查詢遊戲件與障礙物2之間的碰撞。

第三個引數告訴碰撞器在檢測到碰撞後要做什麼。在這個例子中,有一個函式。如果發生碰撞,所有遊戲元素都會被破壞;這會停止遊戲。現在,如果玩家碰到障礙物,他們將結束遊戲。

嘗試使用phaser進行遊戲開發

有許多不同的方法可以改進這個遊戲,使之更加複雜。我們只建立了一個玩家,但是可以新增第二個可玩的角色,並使用“awsd”控制元件進行控制。同樣,你可以嘗試新增更多的障礙物並改變它們的移動速度。

這個介紹會讓你開始學習,但還有很多東西要學。Phaser最棒的一點是很多遊戲物理都是為你做的。這是開始設計2D遊戲的一個非常簡單的方法。繼續構建此程式碼並最佳化您的遊戲。

如果遇到任何錯誤,瀏覽器偵錯程式是發現問題的好方法。

  • 發表於 2021-03-30 00:58
  • 閱讀 ( 71 )
  • 分類:程式設計

你可能感興趣的文章

瀑布模型(waterfall model)和v型(v model)的區別

...它是設計整個軟體體系結構。下一階段是實施階段。它是開始編碼的小單位。這些單元組合起來形成完整的系統,並在整合和測試階段進行測試。測試完成後,軟體將被分發到市場。軟體維護和新增新功能等活動都屬於部署和維...

  • 發佈於 2020-10-18 21:23
  • 閲讀 ( 73 )

如何參加遊戲開發者大會(gdc)2021

... gdc展示什麼時候開始? ...

  • 發佈於 2021-03-11 14:19
  • 閲讀 ( 73 )

15個用於小遊戲等的googlehome命令

...的任務。例如,如果你讓谷歌主頁為你準備睡覺,它可以開始一個常規,使你的臥室燈光昏暗,播放放鬆的音樂,並關閉你的恆溫器。 ...

  • 發佈於 2021-03-17 21:28
  • 閲讀 ( 51 )

統一學習是掌握遊戲開發最簡單的方法

... 學習並不總是一條筆直的路;在開始學習之前能夠轉向另一個主題對於學習新概念是非常好的。 ...

  • 發佈於 2021-03-19 21:05
  • 閲讀 ( 52 )

想成為一個遊戲開發者嗎?這個包教你

... 每個遊戲開發者都必須從某個地方開始。對很多人來說,最棘手的事情是知道在哪裡。我應該使用哪個遊戲引擎?我應該學習程式語言嗎?如果是的話,哪種程式語言最適合遊戲開發? ...

  • 發佈於 2021-03-29 16:17
  • 閲讀 ( 48 )

8款不錯的付費手機遊戲,沒有煩人的應用內購買

...者的目標是開發影片遊戲。 不過,這比這更深入。你一開始只是一個住在**裡的業餘愛好者,後來把你的公司發展成了這個星球上最好的遊戲開發工作室。 對於您開發的每個遊戲,您可以選擇不同的因素,如型別和平臺。當你...

  • 發佈於 2021-04-05 01:05
  • 閲讀 ( 60 )

如何在網際網路上分享你的雷擊遊戲

...個埠,我們就可以一起在internet上玩Minecraft了。 不過,在開始玩之前,我們還需要多做一步,這也會讓我們朋友的生活更輕鬆。 第三步(可選):啟用動態dns服務 此步驟是可選的,但強烈推薦。這會在將來為你節省很多時間,...

  • 發佈於 2021-04-08 10:41
  • 閲讀 ( 52 )

用這些很棒的天文學應用程式更接近宇宙

...有過的那樣。 重建宇宙 要在宇宙中飛行,必須有一個開始,對嗎? 歡迎來到“重建宇宙”,這是一款基於Flash的網頁瀏覽遊戲,它將帶你穿越自己設計的新理論宇宙的整個歷史。標題屬於通常被稱為“空閒遊戲”的類別,或...

  • 發佈於 2021-04-10 05:49
  • 閲讀 ( 54 )

玩雪崩!!在谷歌瀏覽器中

...玩了嗎? 一旦你安裝了擴充套件,你就可以玩遊戲了。開始只需點選“忍者工具欄按鈕”。 一旦你點選“工具欄按鈕”,你會看到一個“空白”彈出視窗這樣。要開始遊戲,只需按“向左或向右箭頭鍵”。“左右箭頭鍵”是操...

  • 發佈於 2021-04-13 22:15
  • 閲讀 ( 56 )

極客樂趣:玩外星人競技場的免費fps遊戲

...取消選中Firefox和InternetExplorer中安裝的爬蟲工具欄。 在開始遊戲之前,你進入銀河系,選擇一個伺服器和遊戲開始。你也可以作為一個單一的球員。 這包括酷快的遊戲,你收集不同的電源,盔甲,武器射擊其他外星人超過40個...

  • 發佈於 2021-04-14 06:36
  • 閲讀 ( 38 )
csuq6235
csuq6235

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦