06 - 飞机大战开发Day2
今天继续完善飞机大战项目,今天的工作量如下:
- 给
Loading
界面添加进度条控件ProgressBar
。 - 实现飞机自动发射子弹。
- 实现敌人随机生成并移动。
进度条
在资源读取时,我们希望有个进度条实时显示资源加载进度,刚好cc.resources.loadDir()
有一个函数重载,支持我们设置进度:
// Loading.js
cc.resources.loadDir('./',
function (finish, total, item) {
if (this.progressBar && this.progressBar.progress < finish / total) {
this.progressBar.progress = finish / total;
}
}.bind(this),
function (err, assets) {
if (err) {
console.log('[Scene Load]:项目资源加载错误');
return;
}
let resMgr = ResourceManager.getInstance();
let dataMgr = DataManager.getInstance();
for (let asset of assets) {
if (asset instanceof cc.SpriteFrame) {
resMgr.arrSpriteFrame.push(asset);
} else if (asset instanceof cc.JsonAsset) {
dataMgr.arrLevelData = asset.json;
}
}
});
在第一个函数中,可以使用已加载的资源数finish
和资源总数total
算出已加载资源的百分比,并且只在百分比高于进度条进度时进行更新。同时注意为了使用Loading.js
中的this
,需要使用.bind()
传参。
飞机自动发射子弹
和小鸟项目的思路差不多,首先制造一个子弹的预制体,然后在游戏场景中添加子弹管理者bulletMgr
,编写相应脚本,生成子弹并让它自己移动(执行子弹预制体脚本的.move()
)。
敌人生成与移动
同理,制造敌人预制体,编写它的行为脚本,然后在游戏场景中添加敌人管理者enemyMgr
,自动随机生成并让它自己移动。