我正在使用Phaser创建一个游戏,这是一个Javascript框架。为了加载敌人,我正在为每个循环使用a。敌人数据从JSON文件中读取(从磁贴编辑器导出)。
然而,我的游戏有几种类型的敌人,飞行,跑,跳。每个敌人都使用不同的精灵。
有没有办法加载每种类型的敌人,而不是为每个循环使用几个? 在创建新类型的敌人时(使用new关键字),我需要将参数从敌人更改为飞行敌人
SuperSmash.playState.prototype.createEnemies = function() {
"use strict";
this.enemies = this.add.group();
var enemyArr = this.findObjectsByType('enemy', this.map,'objectslayer');
**//I need to RESUSE this loop for each type enemy**
var enemyz;
enemyArr.forEach(function(element){
enemyz = new SuperSmash.Enemy(this.game, element.x, element.y, 'enemy', +element.properties.velocity, this.map, this.player);
this.enemies.add(enemyz);
}, this);
};
findObjectsByType: function(targetType, tilemap, layer) {
var result = [];
tilemap.objects[layer].forEach(function(element) {
if (element.properties.type == targetType) {
element.y -= tilemap.tileHeight;
result.push(element);
}
}, this);
return result;
},
答案 0 :(得分:0)
你的意思是这样的吗?:
function createEnemies(type, enemies) {
enemyArr.forEach(function(element){
let enemyz = new SuperSmash.Enemy(this.game, element.x, element.y,
type, +element.properties.velocity, this.map, this.player);
enemies.add(enemyz);
}, this);
};
SuperSmash.playState.prototype.createEnemies = function() {
"use strict";
this.enemies = this.add.group();
var enemyArr = this.findObjectsByType('enemy', this.map,'objectslayer');
createEnemies.call(this,'enemy',this.enemies);
}