Creación de Objetos en Tiempo de Ejecución
Muy a menudo, los juegos o aplicaciones añaden nuevos objetos en tiempo de ejecución, quizá en reacción al usuario o para crear un efecto visual.
En Wonderland Engine, puedes crear objetos desde un componente personalizado de JavaScript usando Scene.addObject o Scene.addObjects.
Añadir un Solo Objeto
Añadir un solo objeto se realiza mediante Scene.addObject:
import {Component, Property} from '@wonderlandengine/api';
export class Spawner extends Component {
static TypeName = 'spawner';
static Properties = {
mesh: Property.mesh(),
material: Property.material(),
};
start() {
/* Crear un nuevo objeto con this.object como padre */
const o = this.engine.scene.addObject(this.object);
/* Adjuntar una malla */
o.addComponent('mesh', {
mesh: this.mesh,
material: this.material,
});
}
} Añadir Muchos Objetos
Para añadir múltiples objetos, Scene.addObjects ofrece un mejor rendimiento:
import {Component, Property} from '@wonderlandengine/api';
export class BatchSpawner extends Component {
static TypeName = 'batch-spawner';
static Properties = {
mesh: Property.mesh(),
material: Property.material(),
count: Property.int(10),
};
start() {
/* Crear 'count' nuevos objetos con this.object como padre y
* informar a Wonderland Engine que necesitaremos 'count' componentes (uno por objeto) */
const objs = this.engine.scene.addObjects(10, this.object, this.count);
/* Adjuntar mallas */
for(let o of objs) {
o.addComponent('mesh', {
mesh: this.mesh,
material: this.material,
});
/* Posicionar el objeto en una ubicación aleatoria dentro de un volumen de cubo 10x10x10 */
o.translate([Math.random()*10, Math.random()*10, Math.random()*10]);
}
}
}