讓你的角色在phaser中復活

為你的移相器遊戲新增動畫將使他們更上一層樓。你就是這樣做的。...

在Phaser中新增遊戲動畫很容易。動畫使電子遊戲角色栩栩如生。將動畫融入遊戲的一種方法是為角色的移動設定動畫。你甚至可以給他們一個空閒狀態的動畫,將執行時,球員沒有任何移動。這會讓你的角色更有個性。

phaser featured

遊戲設定

你需要對Phaser有一個基本的瞭解才能使用動畫。如果您不熟悉Phaser,請先從基本的遊戲教程開始,然後再繼續。本教程將建立在這些基礎之上。

首先,建立一個具有可移動角色的遊戲。在我們的示例中,我們將從用箭頭鍵移動的塊開始。以下是起始程式碼:

var config = { type: Phaser.AUTO, backgroundColor: 0xCCFFFF , width: 600, height: 600, physics: { default: 'arcade' }, scene: { preload: preload, create: create, update: update }}; var gamePiece;var keyInputs;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'); keyInputs = this.input.keyboard.createCursorKeys();} 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; }}

此程式碼將建立一個可以在藍色背景周圍移動的遊戲塊。為簡單起見,該示例僅使用橙色塊作為遊戲角色。看起來是這樣的:

basic phaser game

建立精靈圖紙

第一步是建立動畫。有許多方法來建立動畫,但這是超出了我們在這裡可以涵蓋。出於我們的目的,將動畫儲存為精靈表非常重要。

相關:最好的畫素藝術工具,創造畫素完美的藝術品

精靈圖紙是包含一組動畫幀的單個影象檔案。動畫中的每一幀都放在它後面的一幀旁邊。每個框架的大小必須相同。動畫程式將根據單個幀的尺寸將影象分割成單個幀。

spritesheet

影象儲存在一個數組中。與所有陣列一樣,這意味著第一個影象位於零位置。因此,在上面的示例中,向下動畫從0開始,到3結束。左邊的動畫從四點開始,到七點結束。

向phaser新增精靈表

載入sprite表類似於在Phaser中載入影象。但是,您的程式將需要有關影象檔案的更多資訊。之前,我們在影象中載入了以下文字:

this.load.image('gamePiece', 'img/gamePiece.png');

不過,Sprite表還需要一些引數。我們還必須指定框架的尺寸。因此,要載入sprite表,我們需要按如下方式調整程式碼:

this.load.spritesheet('gamePiece', 'img/spriteSheet.png', { frameWidth: 60, frameHeight: 60});

程式碼非常相似。最大的區別是我們添加了第三個引數,用於指定動畫幀的寬度和高度。在這種情況下,幀是60畫素乘60畫素。

simple sprite sheet

本例將使用一個簡單的sprite表。我們已經添加了一個箭頭和閃爍的指示燈的遊戲精靈。箭頭將指向我們的精靈移動的方向,指示燈將朝這個方向閃爍。如果角色沒有移動,動畫將在所有幀中迴圈。

建立動畫

在為角色設定動畫之前,我們必須先建立動畫。我們已經上傳了精靈表,現在我們要說哪些幀在動畫中。要建立動畫,請將以下程式碼新增到create函式:

this.anims.create({ key: "up", frameRate: 2, frames: this.anims.generateFrameNumbers("gamePiece", {start: 0, end:2}), repeat: -1});

上面是向上方向的動畫。

  • 關鍵字anims是animati***的縮寫。早期版本使用完整的關鍵字動畫,但當前版本使用此快捷方式。
  • 關鍵點是動畫的名稱。您將使用該鍵呼叫動畫。
  • 幀速率控制每秒顯示多少幀。這個例子每秒只有兩幀。
  • 下一行指向動畫中使用的影象和幀。向上動畫使用遊戲件影象,從第0幀開始,到第2幀結束。
  • 如果希望動畫連續迴圈,請將“重複”設定為-1。否則,可以輸入動畫在停止前應重複的次數。

您需要為每個方向和空閒狀態建立動畫。

相關:PowToon使建立動畫影片和幻燈片變得很容易

如何設定角色的動畫

向角色新增動畫非常容易。棘手的部分是動畫之間的轉換。可以在“建立”函式中設定開始動畫。

gamePiece = this.add.sprite(270, 450, 'gamePiece');gamePiece.anims.play("spin");

第一行建立播放器。這和我們以前用一個影象建立一個精靈是一樣的。第二行將動畫設定為旋轉。自旋是一個空閒的動畫,它將在0到11幀的所有幀之間迴圈。

現在,重新載入遊戲時,空閒動畫將開始播放。但是,你會注意到,即使你移動了你的角色,它仍然會繼續播放。基於運動設定動畫有點棘手。

誘惑是改變動畫時,球員按下按鈕,就像我們做了設定運動。這種方法的問題是,我們檢查播放器是否在更新函式中按下了一個鍵。update函式每幀執行一次。如果我們把一個動畫放在那裡,動畫會在播放器按下鍵的每一幀重新開始。

要解決這個問題,我們需要使用不同的方法。我們不想檢查一把鑰匙是否壞了,而是想知道一把鑰匙是否壞了。JustDown只有在第一次按下時才是真的。如果拿著鑰匙,那就不是真的。如果我們用JustDown設定動畫,動畫將不會重置每一幀。

您需要為要在create函式中監視的鍵輸入建立一個變數:

leftKey = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.LEFT);rightKey = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.RIGHT);upKey = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.UP);downKey = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.DOWN);

然後,您需要檢查是否在更新功能中按下了該鍵:

if(Phaser.Input.Keyboard.JustDown(upKey)){ gamePiece.anims.play("up");}

現在,遊戲將更改為向上動畫一旦向上鍵是第一次按下。您需要為每個方向鍵編寫一個類似的if語句。

我們還有最後一個修改要做。現在,當播放器停止按鍵時,最後一個動畫繼續播放。我們希望它回到我們的閒置動畫。為此,我們使用JustUp方法。與JustDown類似,它會在玩家釋放一個鍵時觸發。

if(Phaser.Input.Keyboard.JustUp(upKey)){ gamePiece.anims.play("spin");}

一旦播放器停止按向上鍵,它會將動畫設定回我們的空閒旋轉動畫。您需要為每個方向鍵編寫一個類似的語句。

要檢視最終程式碼,請轉到pastebin。

下一步:建立自己的動畫

在Phaser中建立動畫與使用靜態影象沒有太大區別。但它會把你的遊戲發展到一個新的水平!Phaser使新增動畫變得簡單,因此您可以集中精力在困難的部分:**動畫!

建立自己的sprite表時,不要忘記以下指標:

  • 動畫幀必須具有相同的尺寸
  • 幀將儲存在從零開始的陣列中
  • 動畫通常需要不同於設定移動的觸發器的觸發器。
  • 發表於 2021-03-29 03:31
  • 閱讀 ( 43 )
  • 分類:程式設計

你可能感興趣的文章

聖經(bible)和古蘭經(quran)的區別

...據***,耶穌並沒有被釘在十字架上。***說耶穌不是從死亡中復活的。根據***,耶穌不是上帝的兒子。***說,透過真誠的工作,拯救是可能的。根據***,魔鬼不是墮落的天使,而是墮落的精靈。***說人不是罪人,但他基本上是好人...

  • 發佈於 2020-11-02 18:08
  • 閲讀 ( 63 )

javascript移動應用:是的,有一個框架

... 愛奧尼亞還附帶了一個名為Creator的工具,它可以讓你使用拖放方式為你的移動應用程式建立和設計介面。這比用HTML或類似HTML的標記語言拼湊UI要容易得多。因此,離子是偉大的新手。 ...

  • 發佈於 2021-03-13 05:23
  • 閲讀 ( 34 )

2017年7月ps plus和xbox live的免費遊戲

...是《成長家園》的續集,這是育碧的一款實驗遊戲,可以讓你控制角色的精確動作。《成長》比它的前任更開放。第二款XboxOne遊戲是Runbow,一款專注於多人聚會活動的賽車平臺遊戲。 ...

  • 發佈於 2021-03-14 05:04
  • 閲讀 ( 54 )

準備好變怪了嗎?7款你會喜歡的怪異手機遊戲

...但仍然是強大的,並收到更新。物理有點不尋常,可能會讓你發笑。但是有什麼比當一隻山羊,用頭撞一個人去尋找金盃或美味的糖更有趣呢? ...

  • 發佈於 2021-03-15 10:25
  • 閲讀 ( 41 )

為榮譽而戰的技巧

...之一,現在已經上市。這個來自育碧的第三人稱鬥士可以讓你從三個派系中選擇一個——騎士、維京人或武士——加入線上戰鬥,為你的團隊贏得地盤。 ...

  • 發佈於 2021-03-15 14:04
  • 閲讀 ( 49 )

最適合兒童的8款增強現實遊戲

...組。這個很棒的火車模擬器在房間裡放了一個虛擬玩具,讓你和你的孩子以任何你認為合適的方式建立虛擬火車軌道。 ...

  • 發佈於 2021-03-18 09:58
  • 閲讀 ( 51 )

迪士尼+內容,復活你的mac,陰謀網站,亞馬遜價格跟蹤器

是時候讓你每週一次的科技新聞變得簡單了,這是一個非常有用的播客,一個針對科技恐懼症的科技播客。這一次,迪士尼+內容公司宣佈,如何在黑色星期五之前恢復你的Mac電腦、頂級陰謀網站和亞馬遜價格追蹤系統。 ...

  • 發佈於 2021-03-19 04:03
  • 閲讀 ( 34 )

谷歌“溫布林登”玩一個隱藏的網球遊戲

... 2019年愚人節,谷歌讓你在谷歌地圖上玩蛇。然後,同一個月晚些時候,谷歌在谷歌搜尋中隱藏了一個復仇者終場復活節彩蛋。現在,谷歌已經在搜尋中隱藏了另一個復活節彩蛋,這一個很可...

  • 發佈於 2021-03-20 04:56
  • 閲讀 ( 44 )

海盜灣十大免費torrent備選方案

...流.io在主頁的圖表上提供各種洪流的搜尋趨勢。這些資料讓你對世界上任何時刻最流行的洪流有了一些新的認識。 ...

  • 發佈於 2021-03-20 16:01
  • 閲讀 ( 54 )

7個關鍵提示,幫助您贏得頂點傳奇

...害怕經常使用你的能力。例如,生命線的治療無人機可以讓你的盟友保持健康,而不需要使用貴重的注射器。探路者的終極創造了一條拉鍊線,整個團隊可以使用它快速地遍歷地圖。 ...

  • 發佈於 2021-03-21 17:48
  • 閲讀 ( 42 )