2017-05-18 3 views
0

Also arbeite ich an einem grundlegenden Shooter, bei dem ein Ziel auf dem Bildschirm bewegt wird. Ich verwende babylon.js als Engine und mein Ziel ist es, das Ziel für 0,75 Sekunden auf dem Bildschirm erscheinen zu lassen, dann für 0,5 Sekunden verschwinden zu lassen und dann wieder an einem anderen zufälligen Ort aufzutauchen. Der aktuelle Code I dafür habe, ist dies:Javascript verschieben Ziel um Bildschirm?

function moveTarget(canvas, scene){ 
    setTimeout(function(){ 
    scene.meshes[10].visibility = 0; //how I access the target object 
    randX = genRandNum(minX, maxX); //This is a separate function that works 
    randY = genRandNum(minY, maxY); 
    scene.meshes[10].position = new BABYLON.Vector3(randX, randY, 
       scene.meshes[10].position.z); 
    scene.meshes[10].visibility = 1; 
    x ++; 
    if (x < amount){ 
     moveTarget(canvas, scene); 
    } 
    }, tarDuration * 1000) 

    } 

die zwischen Auftritten des Ziels in der alles außer Verzögerung von 0,5 Sekunden gelingt es, das heißt zur Zeit blinkt von Ort zu Ort ohne Raum dazwischen. Ich denke, dass ich eine zweite setTimeout brauche, aber ich bin nicht ganz sicher, wie man das einbezieht oder wohin es gehen würde. Jeder Schub in die richtige Richtung wäre sehr willkommen.

Antwort

0

Die Art, wie ich dies tun würde, ist ein Timeout für die gesamte Zykluszeit (0,75 s + 0,5 s) und dann ein anderes Timeout innerhalb dieser für die 0,5 s Verzögerung.

function moveTarget(canvas, scene){ 
    setTimeout(function(){ 
     setTimeout(function(){ 
      // Your other code 
      x ++; 
      if (x < amount){ 
       moveTarget(canvas, scene); 
      } 
     }, yourDelayHere) 
    }, tarDuration * 1000) 
} 

Wo yourDelayHere die gewünschte 0,5 s Verzögerung gibt. Ich habe eine Babylon.js playround erstellt, die ein vereinfachtes Beispiel zeigt here.

Verwandte Themen