繁体   English   中英

为每个循环重复使用不同的游戏敌人对象

[英]reusing for each loop for different game enemy objects

我正在使用Java框架Phaser创建游戏。 为了加载敌人,我在每个循环中使用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;
  },

您的意思是这样吗?:

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM