2017-05-18 2 views
0

그래서 나는 기본 사수를 작업 중입니다. 그 중 일부는 화면 주위에서 표적을 움직이는 것과 관련이 있습니다. 저는 babylon.js를 엔진으로 사용하고 목표는 화면에서 0.75 초 동안 나타나고 0.5 초 동안 사라진 다음 다른 임의의 위치에 다시 나타납니다. 나는 그것에 대해 가지고있는 현재의 코드는 이것이다 :자바 스크립트가 화면 주위에서 대상을 이동합니까?

대상의 모습 사이에 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) 

    } 

는, 즉 현재는 중간에 공간 위치로 위치에서 깜박입니다. 나는 두 번째 setTimeout이 필요하다고 생각하고 있습니다. 그러나 나는 그것을 어떻게 포함 할 것인지 또는 그것이 어디로 갈 것인지에 대해서는 확실하지 않습니다. 올바른 방향으로 어떤 추진력이라도 대단히 감사 할 것입니다.

답변

0

내가하는 방법은 전체 사이클 시간 (0.75 초 + 0.5 초)에 대한 제한 시간을 설정 한 다음 0.5 초 지연 시간 내에 또 다른 제한 시간을 설정하는 것입니다.

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

여기서 yourDelayHere는 원하는 0.5 초 지연을 제공합니다. 간단한 예제 here을 보여주는 Babylon.js playround를 만들었습니다.