私はlibgdxを使ってキャラクターがコインを集めて得点を得るシンプルなゲームを作っています。コインが再び消滅する前に1-2秒間しか現れないようにしたいと思います。私はそれをどうやって行うのか分からない。私はスケジューラーやnanoTime()のような技術を試してみましたが、うまく動作しません。特定の時間にオブジェクトが消えるようにするにはどうすればよいですか?
私はコインにスポーンするためにイテレータを使用しています。 (これは更新方法です)
if(TimeUtils.nanoTime() - coin.lastDropTime > 2000000000){
coin.spawnCoin();
}
Iterator<Rectangle> iter = coin.coins.iterator();
while(iter.hasNext()) {
Rectangle gold_coin = iter.next();
if(snail.bounds.overlaps(gold_coin)){
score += 10;
iter.remove();
}
}
これはコインクラスです。
public class Coin {
Sprite image;
boolean isVisible = true;
public Array<Rectangle> coins;
public long lastDropTime;
public Coin(){
image = GameScreen.coin_sprite;
coins = new Array<Rectangle>();
}
public void spawnCoin(){
Rectangle bounds = new Rectangle();
bounds.x = MathUtils.random(20, 1920 - 16);
bounds.y = MathUtils.random(20, 1080 - 50);
bounds.width = image.getWidth();
bounds.height = image.getHeight();
coins.add(bounds);
lastDropTime = TimeUtils.nanoTime();
}
}
私は唯一のコインがお互いの後に2秒を起動するために取得することができ、かつ取り外しコインを取得する唯一の方法は、それらのオーバーラップcharachterをさせることです。
あなたのコインクラスは、1枚のコインまたはすべてのコインを代表するものとしますか?すべてのコインにはlastDropTimeが1つしかありません。コインごとに時間がかかるように聞こえます。lastDropTimeで個々のコインのクラスを作成すると、コインをループするときに制限時間を超えたコインを取り除くことができます。 –
コインは、硬貨やコインが落ちてしまうまでコインが出るようにしたいゲームを終了する。すべてのコインのクラスを作ることは、正しいことではないようです。 –
個々のコインのクラスを作成することによって、1つのコインを作成して1つのコインを作成し、このクラスのインスタンスのリストを現在のコインとして作成することを意味します。 –