2017-01-21 4 views
0

Ich erstelle ein Spiel mit Phaser, ein Javascript-Framework. Um die Feinde zu laden, benutze ich einen für jeden Loop. Die Daten des Gegners werden aus einer JSON-Datei gelesen (exportiert aus einem Kacheleditor).Wiederverwendung für jede Schleife für verschiedene Spiel Feind Objekte

Allerdings hat mein Spiel mehrere Arten von Feinden, diejenigen, die fliegen, rennen, springen. Jeder Gegner benutzt ein anderes Sprite.

Gibt es eine Möglichkeit, jeden Feindtyp zu laden, ohne mehrere für jeden Loop zu verwenden? Wenn eine neue Art von Feind zu schaffen (das neue Schlüsselwort), muss ich von Feind zu den Parameter ändern Feind fliegen

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

Wo speichern Sie die verschiedenen Arten von Feinden, die es gibt? – skyline3000

Antwort

0

Meinen Sie so etwas wie dieses ?:

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