Javascript 如何每x秒创建一个对象?
我是新的编码,我正在做一个javascript游戏。在这个游戏中,我想每5秒左右产生一个敌人。我已经创建了一个敌方类,并试图制作一个if语句,每5秒创建一个新的敌方(在我的例子中是300帧)Javascript 如何每x秒创建一个对象?,javascript,class,html5-canvas,Javascript,Class,Html5 Canvas,我是新的编码,我正在做一个javascript游戏。在这个游戏中,我想每5秒左右产生一个敌人。我已经创建了一个敌方类,并试图制作一个if语句,每5秒创建一个新的敌方(在我的例子中是300帧) if(framect%300==0)新敌人() 这是我的敌人班 var plusOrMinus = Math.random() < 0.5 ? -1 : 1; espd = plusOrMinus*Math.random()*13; class enemy{ constructor(){
if(framect%300==0)新敌人()代码>
这是我的敌人班
var plusOrMinus = Math.random() < 0.5 ? -1 : 1;
espd = plusOrMinus*Math.random()*13;
class enemy{
constructor(){
this.x = Math.random() * window.innerWidth;
this.y= Math.random() * window.innerHeight;
this.xspd = espd;
this.yspd = espd;
this.size= 12;
objects.push(this);
}
step(){
this.x += this.xspd;
this.y += this.yspd;
}
draw(){
strokeColor(255, 0, 0);
fillColor(255,0,0);
circle(this.x,this.y,this.size);
}
}
var plusOrMinus=Math.random()<0.5-1 : 1;
espd=plusor减号*Math.random()*13;
阶级敌人{
构造函数(){
this.x=Math.random()*window.innerWidth;
this.y=Math.random()*window.innerHeight;
this.xspd=espd;
this.yspd=espd;
这个。大小=12;
物体。推(这个);
}
步骤({
this.x+=this.xspd;
this.y+=this.yspd;
}
画(){
strokeColor(255,0,0);
fillColor(255,0,0);
圆圈(这个.x,这个.y,这个.size);
}
}
当我尝试这样做时,它只制造了一个敌人。我知道,因为我有一张物品清单,清单上只有一个敌人。我该怎么做
我很确定framect不会有问题,因为它会随着每一帧的增加而增加。下面是我如何进行帧计数和游戏循环的
function loop(){
stepLoop();
drawLoop();
keyEnd();
}
function stepLoop(){
for (var i = 0; i<objects.length; i++) {
if(objects[i].step) objects[i].step();
framect++;
}
}
function drawLoop(){
background(25, 25, 25);
for (var i = 0; i<objects.length; i++) {
if(objects[i].draw) objects[i].draw();
}
hero.draw();
}
var target_fps = 60;
setInterval(loop, 1000/target_fps);
函数循环(){
stepLoop();
drawLoop();
keyEnd();
}
函数stepLoop(){
对于(var i=0;i,您可以尝试为每个新敌人创建一个新变量,并创建一个包含所有敌人的全局变量
var enemies = []; // when creating a new enemy define it here
if(framect % 300 === 0) {
enemies[enemies.length + 1] = new enemy();
} // this goes into your loop
为什么framect++
在for循环中?看起来这不是所述变量的预期用途。
对于代码,当对象
数组为空时,代码将不会到达行framect++
,因此不会更新帧
for (var i = 0; i<objects.length; i++) {
if(objects[i].step) objects[i].step();
// framect++;
}
framect++; // I think this is how it should be
for(var i=0;iHey,这确实奏效了!我只需要为敌人类稍微修改一下我的数学,很快我就有了随机繁殖的敌人向随机方向移动。谢谢!没问题!不客气:)。请将问题标记为已解决。谢谢!