2016-08-30 87 views
0

我正在libgdx中開發一款遊戲。角色從piller跳到piller。我需要在角色在piller上碰撞時每次增加分數,但是我已經寫了piller和角色之間的碰撞檢測是在渲染方法上。所以當角色在分身時,分數會不斷增加。實際上,當角色在每個piller上時,我需要增加分數(一個piller的一次增量)。所以任何人都可以向我解釋如何在角色與對象碰撞時如何設置標誌以使增量只有一次。碰撞檢測和評分工作不正常

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

     } 

回答

0

我找到了答案。當角色與琵琶碰撞時,得分不斷增加。這是因爲libgdx檢查碰撞檢測的速率是1/60 fps而發生的。所以在每個納秒時間內,它都會檢測到碰撞,並且正在增加分數。所以爲了在一次碰撞中只增加一次分數,我已經使用了下面的小代碼,這對我很有用。

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

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

//所以這裏的分數是一個完整的碰撞

+0

這不是一個好的解決方案。你正在使你的得分率依賴,這使得它成爲一個非常不穩定的得分系統。這可能適用於這種特定的情況,只適用於一種特定的幀速率,但有更好的方法可以做到這一點。 – 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

只是正常的。沒有複雜的代碼,一切都在工作期望得分。請解釋我如何把它的標誌。 –