ヘルスバーを実装するゲームに取り組んでいます。ヘルスバーは 1px x 1px の CCSprite で、ここで見つけたメソッドを使用して必要なサイズにサイズ変更されます。この方法を使用すると、バーのサイズが大きく変更されますが、残りの健康状態に応じてバーの色を変更したいと思います。サイズ変更を行うために使用している方法は次のとおりです。
-(void) takeDamage:(double)damage {
currentHP -= damage;
if( currentHP > 0) {
double percentage = (double)currentHP/ (double)maxHP;
double width = (self.contentSize.width * (3.0f/4.0f)) * percentage;
if (percentage <= 0.2f) {
CCTexture2D * tex = [[CCTextureCache sharedTextureCache] addImage:@"hp_red.png"];
[bar setTexture:tex];
} else if( percentage <= 0.45f) {
CCTexture2D * tex = [[CCTextureCache sharedTextureCache] addImage:@"hp_yellow.png"];
[bar setTexture:tex];
}
[self resizeSprite:bar toWidth:width toHeight:self.contentSize.height/15];
}
[nums setString:[NSString stringWithFormat:@"%i/%i", currentHP, maxHP]];
}
私が行っているテクスチャの変更は、SO から取得した別のものであり、スプライトの画像を変更します (緑ではなく黄色または赤であることを除いて、別の 1 ピクセル x 1 ピクセルの画像に変更します)。問題は、以下に示すように、スプライトの半分が黄色で残りの半分が黒であることです。
「Abraxol」のヘルスバーを見ると、私が話している半分が黄色で半分が黒の奇妙な効果が表示されます。