亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何每隔x秒創建一個對象?

如何每隔x秒創建一個對象?

一只萌萌小番薯 2022-08-27 10:49:44
我是編碼新手,我正在制作一個javascript游戲。在這個游戲中,我想每5秒左右生成一次敵人。我創建了一個敵對類,并試圖做一個if語句,每5秒創建一個新的敵人(在我的情況下是300幀)。if(framect % 300 === 0) new enemy();這是我的敵人類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);  }}當我嘗試這樣做時,它只會產生一個敵人。我知道,因為我有一個對象列表,列表中只顯示一個敵人。我該怎么做?我很確定它不是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);
查看完整描述

2 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

您可以嘗試為每個新敵人創建一個新變量,并創建一個包含所有這些敵人的全局變量。


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


查看完整回答
反對 回復 2022-08-27
?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

為什么在 for 循環內部?看起來這不是所述變量的預期用途。在代碼的情況下,當數組為空時,代碼將不會到達行,因此不會更新幀。framect++objectsframect++


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

另外,我不確定你為什么要做.您正在檢查正在迭代的對象是否具有正確的方法?我認為如果你創建一個不同的數組來保存不同類型的對象會更容易。if(objects[i].step)step


查看完整回答
反對 回復 2022-08-27
  • 2 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號