このサイトはすでにゲームを作成する過程で私を助けてくれましたが、今は固まっているので、誰かが私を助けてくれることを願っています。libgdxゲームはデバッグ中ではなくエミュレータでは動作しません
私は現在、libgdxでアンドロイドスタジオでゲームを作成しようとしています。それはピットと障害物を持つ非常に簡単なジャンプとランニングゲームです。ユーザは3つの生命を持ち、3つのハート型テクスチャとして提示される。 プレイヤーが障害物の1つに衝突すると、心臓の1つが塗りつぶしから空に変わることになっています。 問題は:デバッグ中は完全に正常に動作しますが、Androidのタブレットで実行すると正しく動作しません。ただ一つの空を空に変更するのではなく、GameOverStateが現れるまで、すべての心を空に変え続けます。
わかりやすいように(うまくいけば)、私のコードのいくつかをここに示します。私はそれが重複したコードと非常にエレガントではない多くのことを知っているが、私は後でその心配ます:
更新方法で私のPlaystateで:
private void updateObstacles(float dt) {
//nerd == player
if (obstacle.collides(nerd.getBounds())) {
switch (obstacle.getType()) {
...
case ConstantsGame.WOMAN_TYPE:
alreadChanged = false;
Score.updateHeart(gameManager);
default:
...
}
}
}
そして、私のスコアのクラスで:
は、public static void updateHeart(GameStateManager manager) {
state = getStateOfHearts();
if (state == 4) {
changeHeart(true, 0);
} else if (state == 3) {
manager.set(new GameOverState(manager));
} else if (state == 2) {
changeHeart(true, 2);
} else if (state == 1) {
changeHeart(true, 1);
} else {
}
}
public static int getStateOfHearts() {
if ((!PlayState.alreadChanged && hearts.get(0) == heartEmpty) && (hearts.get(1) == heartFilled) && hearts.get(2) == heartFilled) {
state = 1;
PlayState.alreadChanged = true;
return state;
} else if (!PlayState.alreadChanged && hearts.get(1) == heartEmpty && hearts.get(2) == heartFilled && hearts.get(0) == heartEmpty) {
state = 2;
PlayState.alreadChanged = true;
return state;
} else if (!PlayState.alreadChanged &&hearts.get(2) == heartEmpty && hearts.get(0) == heartEmpty && hearts.get(1) == heartEmpty) {
state = 3;
PlayState.alreadChanged = true;
return state;
} else {
PlayState.alreadChanged = true;
return state;
}
}
changeHeartメソッドは、対応するハートを空のシェイプに変更するだけです。 私はちょうど理解していない、なぜそれが完璧にデバッグ中に動作しますが、 "実際の生活"ではありません。
はあなたの障害物のクラスでは、事前にそんなに
Maximiliane
を私はalreadChangedをfalseにオタクが障害物と衝突するたびに設定され、これを読んで。これは、すべてのフレームのオタクが衝突すると、彼は心を失うことを意味します。だから、もし彼が4つのフレームのために同じ障害物に衝突すると、彼は心を使い果たすでしょう。 – IronMonkey
はい、かなり妥当と聞こえます。あなたはその問題をどのように克服するか考えていますか?フレームに関係なく、1つの時間しか変更しないことを確認するにはどうすればよいですか? 私はすでにカウンターで非常に同じ問題を抱えていました。 – Maxikilliane