教你用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();
來實現跳躍音效的呼叫。
最終效果的原始碼可以點選這裡下載
相關文章
- Flappy Bird 惡意程式詳細分析APP
- Scratch3之AI整合 - flappy bird AI版本AIAPP
- JAVA專案:Java實現飛揚的小鳥(Flappy Bird)JavaAPP
- U3D遊戲開發從入門到彎道超車(2):《Flappy Bird》場景動畫及角色動畫製作3D遊戲開發APP動畫
- PaddlePaddle版Flappy-Bird—使用DQN演算法實現遊戲智慧APP演算法遊戲
- DQN(Deep Q-learning)入門教程(四)之Q-learning Play Flappy BirdAPP
- DQN(Deep Q-learning)入門教程(六)之DQN Play Flappy-bird ,MountainCarAPPAI
- 鬥圖?教你用Python製作表情包Python
- 手把手教你用iRingg Mac版製作iphone鈴聲!MaciPhone
- Docker二所映象製作Docker
- HTML5 video視訊字幕的使用和製作HTMLIDE
- html5案例--製作電影影評網HTML
- Hype 4 Pro Mac(HTML5動畫製作軟體)MacHTML動畫
- HTML5培訓教程學習之動效製作HTML
- 教你用Python製作一個NBA球員資料查詢小程式Python
- 手把手教你用6行程式碼製作月曆生成器行程
- 動態二維碼免費製作
- 使用Go語言製作二維碼Go
- 如何製作一款Galgame(二):galgame分幕,分鏡創作和演出製作GAM
- 網站製作中常見的10個 HTML5 程式碼片段整理網站HTML
- 二級下拉導航選單製作詳解
- 第二章 製作短影片文字效果
- 有哪些不用編寫程式碼就能輕鬆製作生成HTML5頁面的工具HTML
- PopupWindow使用詳解(二)Popwindow製作常見花哨效果
- 一步步教你用HTML5 SVG實現動畫效果HTMLSVG動畫
- Blender 效果製作:製作起伏不平的路面
- 前端如何優雅的製作帶LOGO的二維碼前端Go
- 製作一個小成本 ARG — ARG 的前世今生(二)
- 製作 Rust 語言非同步 ORM 框架(Mybatis)第二彈Rust非同步ORM框架MyBatis
- 遊戲優化系列二:Android Studio製作圖示教程遊戲優化Android
- 學習HTML5還是學習HTML5的製作工具?HTML
- 一步一步教你用 Vue.js + Vuex 製作專門收藏微信公眾號的 appVue.jsAPP
- three.js 製作屬於自己的動態二維碼JS
- 數錢遊戲連結、二維碼,怎樣快速製作遊戲
- 價目表製作報價單製作軟體
- GIF動圖怎麼製作?GIF圖片製作
- HTML5開發學習教程,學習HTML5還是學習HTML5的製作工具?HTML
- 1-Are You a Night Owl or an Early Bird - A New RoommateOOM
- 第二章HTML5基礎HTML