2013-05-19 90 views
1

隨着我的遊戲進行,敵人變得更強。爲了讓敵人變得更強大,我製作了一個名爲thealth的私人int(可能是一個糟糕的編程選擇),每次這個sprite都會觸及這個財富 - ;直到它達到零並且精靈被移除。這工作得很好,直到我決定一次在我的場景中有多個精靈。我遇到的問題是,如果這個精靈擁有兩個財富(例如),我觸摸它,所有其他精靈都有他們的財富 - ;太。那麼我怎麼能給每個精靈自己的健康,所以如果我碰它,其他精靈不會受到影響?每個敵人的生命

@Override 
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) { 
    if (pSceneTouchEvent.isActionDown()) { 
     if (this.getAlpha() > 0.8f) { 
      thealth--; 
     } 
     if (thealth == 0) { 
      this.detachSelf(); 
      mScene.unregisterTouchArea(this); 
      Score++; 
      if (Score < 35) { 
       thealth = 1; 
      } 
      if (Score > 35) { 
       thealth = 2; 
      } 
      if (Score > 100) { 
       thealth = 3; 
      } 
     } 
     return true; 
    } 
    return false; 
} 
+2

聽起來像健康定義爲靜態 – SpiderPig

+2

確保thealth是一個實例變量( - >每個實例有它自己的拷貝),而不是一個靜態或全局變量。 – Patashu

+0

我知道這不是最好的代碼,我一直試圖教自己的Java和我一直在相處,我猜。謝謝你們的幫助。 – user2300663

回答

2

建議修復您的代碼:

  1. 確保敵人精靈是一個類,thealth包含在它(有點明顯,但以防萬一)

  2. 確保thealth變量沒有static關鍵字(如果它的確那麼該變量將在該類的所有實例中共享)。

例如,

class Enemy extends Sprite{ 
    int thealth=4; //Or whatever you want really 
}