2017-11-15 3 views
0

ゲームで落ち葉を特定の間隔で実装したい。 ゲームが開始されてから10秒後に、葉が落ちていなければなりません。その後、再び葉は20秒後に落ちなければなりません。間隔でタスクをスケジューリングする-LibGdx

私は配列の落ち葉のためにこのメソッドを持っています。

private void updateFalls(float delta) { 
    for (Leaf l : leaves) 
    l.moveLeavesDown(delta); 
    spawnleaves(); 
} 

タイマークラスでは可能ですか?一定間隔でタイマー内でこのメソッドを呼び出すことはできますか? ご協力いただければ幸いです。

答えて

1

あなたは、このようにタイマーを使用することができます。

Timer timer=new Timer(); 
timer.scheduleTask(new Timer.Task() { 
      @Override 
      public void run() { 
       spawnLeaf(); 
      } 
     },10,20);   // --> 10 is your first delay and 20 is interval in sec. 

私はSpriteとしてリーフを検討しているが、それはImageまたはその他のEntityかもしれません。

spriteBatch.begin(); 

Iterator<Sprite> iter = leaves.iterator(); 
while (iter.hasNext()) { 
    Sprite spr = iter.next(); 
    spr.draw(spriteBatch); 
    spr.setY(spr.getY()-50f*Gdx.graphics.getDeltaTime()); 
    if (spr.getY()<0) 
     iter.remove(); 
} 
spriteBatch.end(); 

Timerすべての葉の

Array<Sprite> leaves=new Array<Sprite>(); 
private void spawnLeaf(){ 
    Sprite sprite=new Sprite(texture); 
    sprite.setPosition(MathUtils.random(Gdx.graphics.getWidth()),Gdx.graphics.getHeight()); 
    leaves.add(sprite); 
} 

ドローと位置更新部分のすべてのスケジュールされたタスクを除去するのに役立つclear()stop()方法があり、それぞれのタイマーを停止します。ここでは

は私のspawnLeaf方法がありますそれは再び始まるかもしれません。

関連する問題