2013-05-19 104 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 
}