2014-11-19 4 views
-2

내가 독립적으로 사용자 FPS의, 내 게임에 무작위로 평균 이초 물건을 산란 싶어 FPS 다음이 정확하고, 문제가 무엇되지 않은 경우 :가장 좋은 방법은 무작위로 산란 물건,

function update(delta) { 
    var interval = 2; // in seconds 
    if (Math.floor(Math.random() * (1/delta) * interval) == 0) spawn(); 

    ... 

    obj.x += obj.vx * delta 
} 

평균 2 초 간격으로 임의로 생성합니까?

또한 더 나은 방법이 있습니까?

+0

더 적합? –

+0

@Cobra_Fast 무작위성의 법칙이 궁금하지 않습니다. – super

+0

델타 모델링이란 무엇입니까? 생성 속도가 델타와 독립적 인 경우 왜 델타가 함수에 나타 납니까? – jrsala

답변

1

setTimeout 또는 setInterval을 사용하면 특정 시간 후에 함수가 반복적으로 호출되도록하는 것이 좋습니다.

사용하고 싶지 않다면 spawner 개체의 update 기능에 현재 프레임의 delta 대신 현재 세계 시간을 사용하게하십시오. 또한 개체가 마지막으로 생성 된 시간을 기록하도록하십시오. this.intervalDeviation이 어디

// maybe it should be 2000, in milliseconds, idk 
if (currentTime - this.lastTimeSomethingSpawned >= this.spawningInterval) { 
    spawn(); 
    this.lastTimeSomethingSpawned = currentTime; 
    this.spawningInterval = 2 + (2*Math.random()-1)*this.intervalDeviation; 
} 

: 당신이 대신 일정한 2 초있는의 간격을 무작위 단지 새로운 임의의 간격마다 시간을 다시 계산하려면

// maybe it should be 2000, in milliseconds, idk 
if (currentTime - this.lastTimeSomethingSpawned >= 2) { 
    spawn(); 
    this.lastTimeSomethingSpawned = currentTime; 
} 

:이 방법은, 당신은 할 필요가 0.5과 같은 것입니다. 이 방법으로, this.spawningInterval은 무엇인가가 나올 때마다 1.5와 2.5 사이가됩니다.

마지막으로,이 질문은 스스로를 테스트하지 못하도록 무엇 Gamedev Stackexchange