所以我正在研究基本的射击游戏,其中一部分涉及在屏幕上移动目标。我使用babylon.js作为引擎,我的目标是让目标在屏幕上显示0.75秒,然后消失0.5秒,然后重新出现在不同的随机位置。我现在的代码是:
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)
}
除了目标出现之间的0.5秒延迟之外,其他所有内容都成功,即当前它从一个位置闪烁到另一个位置,两者之间没有空格。我认为我需要第二个setTimeout,但我不完全确定如何包含它或它将去哪里。任何推动正确方向的人都会非常感激。
答案 0 :(得分:0)
我这样做的方法是设置一个完整周期时间的超时(0.75 s + 0.5 s),然后在0.5 s延迟时间内设置另一个超时。
function moveTarget(canvas, scene){
setTimeout( function (){
setTimeout( function(){
// Your other code
x ++;
if (x < amount){
moveTarget(canvas, scene);
}
}, yourDelayHere)
}, tarDuration * 1000)
}
youDelayHere给出所需的0.5秒延迟。我创建了一个Babylon.js
playround,其中显示了一个简化示例here。