教你用HTML5製作Flappy Bird(二)
在上一篇HTML5教程中,我們做了一個簡化版的Flappy Bird。雖然可以“稱得上”是一款遊戲了,但卻是一款很無聊的遊戲。在這篇文章中我們來看一看如何給它新增動畫效果和音效。雖然並沒有改變遊戲的機制,但卻能夠使遊戲變得更加有趣。你可以點選這裡先體驗一下。
設定
首先下載新的模板。其中包括了我們在上一個教程中完成的程式碼和一個新的音效檔案。
開啟main.js,開始敲吧。
新增飛行動畫
小鳥上下飛行的方式太單調了,我們來加一些特效,讓它看起來有點兒遊戲的樣子。
1.下降時角度轉動速度放慢,直到特定值。
2.上升時翻轉角度。
第一個任務很簡單,我們只需要新增兩行程式碼到update()方法。
if (this.bird.angle < 20) this.bird.angle += 1;
第二步我們有兩個選擇,簡單起見,我們可以只在jump()方法中新增
this.bird.angle = -20;
但是這中角度的驟變看起來有點兒彆扭。所以,我們還可以讓角度有個變化的過程。我們可以用如下程式碼替換掉上面的。
// create an animation on the bird var animation = this.game.add.tween(this.bird); // Set the animation to change the angle of the sprite to -20° in 100 milliseconds animation.to({angle: -20}, 100); // And start the animation animation.start();
也可以揉成一行程式碼:
this.game.add.tween(this.bird).to({angle: -20}, 100).start();
這樣一來就差不多了,如果你現在測試一下游戲,你會發現小鳥的角度變化得並不自然。像左邊的圖,但是我們想要的是右圖的效果。
為了達到這個目的,我們要做的是改變小鳥的中心(anchor)。在create()方法中新增如下程式碼來改變中心(anchor)。
this.bird.anchor.setTo(-0.2, 0.5);
現在測試一下游戲你就會發現已經好得多了。
新增失敗動畫
首先,更新update()方法:用hit_pipe()替換restart_rame()。
this.game.physics.overlap(this.bird, this.pipes, this.hit_pipe, null, this);
然後我們來寫一個hit_pipe()方法。
hit_pipe: function() { // If the bird has already hit a pipe, we have nothing to do if (this.bird.alive == false) return; // Set the alive property of the bird to false this.bird.alive = false; // Prevent new pipes from appearing this.game.time.events.remove(this.timer); // Go through all the pipes, and stop their movement this.pipes.forEachAlive(function(p){ p.body.velocity.x = 0; }, this); },
最後,為了保證撞了管子的小鳥不詐屍,在jump()方法的最前面新增如下程式碼:
if (this.bird.alive == false) return;
動畫效果新增完畢。
新增音效
用Phaser新增音效非常容易。(作者提供的音效檔案貌似無法播放,大家可以找點兒別的代替。)
在preload()中新增
this.game.load.audio('jump', 'assets/jump.wav');
在create()中新增
this.jump_sound = this.game.add.audio('jump');
最後在jump()中新增
this.jump_sound.play();
來實現跳躍音效的呼叫。
最終效果的原始碼可以點選這裡下載
相關文章
- 教你用 HTML5 製作Flappy Bird(上)HTMLAPP
- 教你用HTML5製作Flappy Bird(一)HTMLAPP
- 大紅大紫的獨立製作遊戲 Flappy Bird 將要下架了遊戲APP
- Flappy Bird下架的真相APP
- Flappy Bird 惡意程式詳細分析APP
- Flappy Bird 8月將重返App StoreAPP
- MFC實現桌面版Flappy BirdAPP
- Flappy Bird 的啟示:不要相信成功學APP
- Flappy Bird的啟示:不要相信成功學APP
- 65行 JavaScript 程式碼實現 Flappy Bird 遊戲JavaScriptAPP遊戲
- Scratch3之AI整合 - flappy bird AI版本AIAPP
- Flappy Bird成功之道:極簡設計 貴人相助APP
- Flappy Bird開發者接受採訪,解釋上癮的危害APP
- U3D遊戲開發從入門到彎道超車(2):《Flappy Bird》場景動畫及角色動畫製作3D遊戲開發APP動畫
- JAVA專案:Java實現飛揚的小鳥(Flappy Bird)JavaAPP
- 鬥圖?教你用Python製作表情包Python
- PaddlePaddle版Flappy-Bird—使用DQN演算法實現遊戲智慧APP演算法遊戲
- 玩遊戲學程式設計:Code.org推出Flappy Bird程式設計課遊戲程式設計APP
- DQN(Deep Q-learning)入門教程(六)之DQN Play Flappy-bird ,MountainCarAPPAI
- 製作原生APP(二)APP
- DQN(Deep Q-learning)入門教程(四)之Q-learning Play Flappy BirdAPP
- 教你從頭到尾利用DQN自動玩flappy bird(全程命令提示,GPU+CPU版)APPGPU
- 程式設計師帶你一步步分析 AI 如何玩 Flappy Bird程式設計師AIAPP
- Docker二所映象製作Docker
- HTML5 Canvas製作雷達圖實戰HTMLCanvas
- 手把手教你用iRingg Mac版製作iphone鈴聲!MaciPhone
- Hype 4 Pro Mac(HTML5動畫製作軟體)MacHTML動畫
- 製作html5微信頁面的經驗總結。HTML
- HTML5 video視訊字幕的使用和製作HTMLIDE
- HTML5培訓教程學習之動效製作HTML
- 基於HTML5 Canvas WebGL製作分離摩托車HTMLCanvasWeb
- 如何製作一個響應式的HTML5表格HTML
- html5案例--製作電影影評網HTML
- 教你用Python製作一個NBA球員資料查詢小程式Python
- 手把手教你用6行程式碼製作月曆生成器行程
- 使用Go語言製作二維碼Go
- 動態二維碼免費製作
- 用GameAPI函式製作二維動作遊戲(轉)GAMAPI函式遊戲