Ez a dokumentum egy előző változata!
Tiled map editor segítségével:
Hozzunk létre egy új fájlt a js/classes
mappában, spawner.js
néven, a következő tartalommal:
class Spawner { constructor(config, clock, spawnLocations, addObject, deleteObject) { this.id = config.id; this.spawnInterval = config.spawnInterval; this.limit = config.limit; this.objectType = config.objectType; this.clock = clock; this.spawnLocations = spawnLocations; this.addObject = addObject; this.deleteObject = deleteObject; this.objectsCreated = []; this.objectId = 1; } }
Ez az osztály fogja szabályozni a spawner-ek működését. Az osztály konstruktora a következő adatokat fogadja:
config
objektum:id
: a spawner azonosítója,spawnInterval
: objektum spawn-olás időköze,limit
: aktív objektumok maximális száma,objectType
: objektum típusa (MONSTER
vagy CHEST
)clock
: a megfelelő scene-hez tartozó Clock objektum (this.time
)spawnLocations
: az objektumok lehetséges pozíciói,addObject
, deleteObject
: callback függvények, melyeket valamely objektum hozzáadása, illetve törlése esetén fog meghívni a Spawner
osztály.
Az objectsCreated
tömb a spawner által létrehozott aktív objektumokat tartalmazza, az objectId
pedig az első létrehozandó objektum egyedi azonosítóját.
Az osztályon belül hozzunk létre egy start
metódust, mely az objektumok spawn-olását fogja időzíteni:
start() { this.interval = this.clock.addEvent({ delay: this.spawnInterval, loop: true, callback: () => { if (this.objectsCreated.length < this.limit) { this.spawnObject(); } } }); }
A konstruktorban, az adattagok inicializálását követően hívjuk is meg ezt a metódust: this.start();