Prefab
Prefab的字面意思是“预先装配”
在我们的教程中,一个Prefab就是一个游戏对象,它能被设置,能够被实例化多次。并且每次实例化时都有基本的属性。在游戏开发中是一个简单术语,主要针对classes/prototypes实现的预先定义好视觉和行为的游戏对象。
打开play.js文件,移去create和update函数中的所有代码。结果如下下:
'use strict';
function Play() {}
Play.prototype = {
create: function() {
},
update: function() {
};
module.exports = Play;
为了便于调试,同时也编辑一下preload.js文件,将初始的状态改为’play‘,以便我们直接进入play状态,而不再需要点击menu中的开始按钮。
update: function() {
if(!!this.ready) {
//便于调试,将menu改为play
this.game.state.start('play');
}
}
现在我们有一个干净的状态。让我们开始做一件制作游戏最重要的一件事。
我们打算在我们游戏中采用Phaser的Arcade 物理引擎,主要是因为它的简单性。
回到play.js,在create()函数的最上方,增加如下代码:
create: function() {
this.game.physics.startSystem(Phaser.Physics.ARCADE);
}
上面代码告诉Phaser框架,我们使用Arcade 物理引擎。当Phaser运行到该行时,它不单单的告诉我们的游戏在每一帧中开始运行物理模拟,它做了一整套的内部逻辑。
针对游戏设置全局重力是相当的容易。代码如下:
create: function() {
this.game.physics.startSystem(Phaser.Physics.ARCADE);
this.game.physics.arcade.gravity.y = 500;
}
现在,加入游戏的每一个具有物理体的sprite将以最大速率为每秒500像素的速率加速落入地面。
我们实际上应当把这句代码在以后的教程中引入,但由于我们有特殊的考虑,先加入代码,别关注具体细节。
create: function() {
/* 物理引擎和重力设置*/
// 增加背景
this.background = this.game.add.sprite(0,0,'background');
}
查看浏览器,可以发现我们已经加载了背景图片。但是注意,虽然我们加入了物理引擎和重力设置,但是背景却没有下落,这是因为背景的物理特性没有设置。
我们创建一个biid预制对象,它包含所有行为和指导小鸟移动发现的代码。进入系统终端并进入工程目录,执行如下命令:
yo phaser-official:prefab "bird"
这儿有一些预先的提示如下:
yo phaser-official:prefab bird
Creating the new prefab: bird
[?] What is the name of your prefab? bird
[?] What sprite key would you like to use? bird
create game/prefabs/bird.js
j