1

私のゲームが進むにつれて、敵は強くなります。敵をより強くするために、私は thealth と呼ばれるプライベート int を作成し (おそらく悪いプログラミングの選択です)、スプライトがタッチされるたびに thealth--; ゼロになり、スプライトが削除されるまで。一度に複数のスプライトをシーンに入れることにするまで、これはうまくいきました。私が抱えている問題は、このスプライトのテアルが 2 (たとえば) で、それに触れると、他のすべてのスプライトがテアルを持っているということです。それも。では、各スプライトに独自のヘルスを与えて、それに触れても他のスプライトに影響を与えないようにするにはどうすればよいでしょうか?

@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;
}
4

1 に答える 1

2

コードを修正するための提案:

  1. 敵のスプライトがクラスであり、thealth が含まれていることを確認してください (少し明白ですが念のため)

  2. thealth 変数に static キーワードが含まれていないことを確認してください (含まれている場合、その変数はクラスのすべてのインスタンスで共有されます)。

例えば。

class Enemy extends Sprite{
    int thealth=4; //Or whatever you want really
}
于 2013-05-19T03:56:40.567 に答える