[SOLVED] Create Entity every X amount of seconds

How would I spawn an entity every 20 seconds or 30 seconds, also how would I spawn 1 single cloned entity at a certain dt time? I tried to do if(this.timer >3) this.clone teleport 1,1,1 but this spammed the entity every frame bs abuse there’s nothing stopping it

Don’t forget to set the timer on 0 again.

That and also try using a flag variable to achieve this. Should solve it.

whats a flag variable, could you give an example? and i haven’t tried to reset the timer yet

The following code should help you understand.

let flag = false;

if (/*condition is true*/ && flag === false) {
   //do whatever
   flag = true;
}
1 Like

You’d do something like:

var Spawner = pc.createScript('spawner');

Spawner.attributes.add('interval', { type: 'number', default: 1 });
Spawner.attributes.add('entityToSpawn', { type: 'entity' });

// initialize code called once per entity
Spawner.prototype.initialize = function() {
    this.timer = 0;
};

// update code called every frame
Spawner.prototype.update = function(dt) {
    this.timer += dt;
    
    if (this.timer >= this.interval) {
        var clone = this.entityToSpawn.clone();
        this.app.root.addChild(clone);
        
        this.timer = 0;
    }
};
2 Likes

Thanks guys, @Leonidas helped me solve it using this method

var Spawner = pc.createScript('spawner');


// initialize code called once per entity
Spawner.prototype.initialize = function() {
    this.Spawner = 0;
    this.isSpawnerActive = false;
};

Spawner.prototype.beginSpawner = function(){
    this.isSpawnerActive = true;  
};

// update code called every frame
Spawner.prototype.update = function(dt) {
   
    
    this.Spawner += dt;
    
    if (this.Spawner > 5 && this.isSpawnerActive === false) {

        this.beginSpawner();

         var Monster1 = this.app.root.findByName('Monster1');
    var F = Monster1.clone();
    Monster1.parent.addChild(F);
        F.rigidbody.teleport(-12, 1, -4);
         
        
        
    }
     
};
1 Like

This is what I meant. In this code, this.isSpawnerActive is your flag. This should work perfectly.

1 Like