2016-08-30 20 views
0

私はlibgdxでゲームを開発しています。キャラクターがピラーからピラーにジャンプしています。キャラクターがピラーに衝突するたびにスコアを増やす必要がありますが、ピラーとキャラクターの間の衝突検出をレンダリング方法に書いています。キャラクターがピラーにいるとき、スコアは連続的に増加しています。 Actully私は文字が各ピラー(1つのピラーのための1つの時間増分)にあるときにスコアを増やす必要があります。誰も私はキャラクターがオブジェクトと衝突すると、増分を作るためのフラグを設定する方法を私に説明することができます。衝突検出とスコアリングが正しく機能していません

 public int getScore(){ 
      return 1; 
     } 
     public void update(){ 
     if (character.overlaps(piller)) 
     { score+=getScore(); 

     } 

答えて

0

回答が見つかりました。キャラクターがピラーに衝突したとき、スコアは連続的に増加していました。 libgdxによって衝突の検出が1/60 fpsのレートでチェックされているために起こります。そのため、各ナノ秒で衝突を検出し、スコアを増加させていました。 1回の衝突でスコアを1回だけインクリメントするには、以下の小さなコードを使用しています。

 int count =0; 
     if(pillerEctangle.overlaps(chaaracterRectangle)){ 
     count++; 
     if (count % 60 == 0) { 

        Score += 1; 
        Syste.out.println(score+"incremented score"); 
       } } 

//ので、ここでスコアがいっぱい衝突時に一度ずつ

+0

これは良い解決策ではありません。これは非常に揮発性のスコアリングシステムになるあなたのスコアリングフレームレートに依存しています。これはこの特定のケースでは1つの特定のフレームレートでしか機能しないかもしれませんが、これを行うもっと良い方法があります。 – IronMonkey

1

ピラールクラスにブール値を設定して、ピラが点数であるかどうかを確認します。

if(character.overlaps(piller)) 
    if(!pillar.isScored()) 
     score++; 
    else 
     pillar.setScored(); 

より具体的な回答には、コードを投稿する必要があります。

public class Pillar{ 

    private boolean isScored = false; 

    ..... 

    public boolean isScored(){ 
     return scored; 
    } 

    public void setScored(){ 
     scored = true; 
    } 
} 
+0

は、私は上記のコードを更新したお返事ありがとうございます。この問題を解決する方法について私に明確なアイデアを教えてください。事前におねがいします。 –

+0

Pillarクラスはどのように見えますか? – IronMonkey

+0

ちょうど正常な.noの複雑なコードは、すべてが働いていますこの得点を期待してください。 –

関連する問題