首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CCSprite宽度问题

CCSprite宽度问题
EN

Stack Overflow用户
提问于 2012-08-06 03:39:48
回答 2查看 444关注 0票数 0

我正在开发一个实现健康条的游戏。健康条是一个1px x 1px的CCSprite,然后使用我找到的here方法将其调整到我需要的大小。使用这种方法可以很好地调整条形图的大小,但我希望根据剩下的生命值来改变条形图的颜色。下面是我用来调整大小的方法。

代码语言:javascript
复制
-(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中得到的,它改变了精灵的图像(除了它是黄色或红色而不是绿色之外,它是另一个1px x 1px的图像)。问题是精灵只有一半是黄色的,另一半是黑色的,如下所示。

如果你看一下"Abraxol“的健康条,你会看到我所说的奇怪的半黄半黑的效果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-06 07:24:34

不确定,但黄色褪色为黑色的奇怪之处可能与纹理的大小为1px x 1px以及图像文件的生成方式有关。你有没有试过使用更大的图像文件,比如10px x 10px的图像文件,看看效果是否仍然存在。

你有什么理由不使用和健康条一样大的精灵吗?

在游戏全明星拉力赛中,在下面的图片中,我使用了多个精灵作为精灵健康条,其中红色,绿色和黄色条在健康条轮廓后面的精灵。我只是将锚点设置在精灵的左侧,并操纵精灵的scaleX将健康条的长度从1.0向下更改为0.01作为最小比例,然后我使精灵不可见,并且不尝试缩放到更小的值。

如果你想在健康条缩小时改变精灵的颜色或纹理,你可以分层不同颜色的精灵,并交换它们的可见性。

如果你在游戏中使用的条是实际条的大小,那么你可以在精灵中添加有趣的渐变或其他效果。

更改精灵颜色的另一个选项是使用sprite.color来操控精灵的颜色。使用颜色属性,您可以减去精灵的红色、绿色和蓝色值以对其进行着色。如果从白色精灵开始,则可以将其着色为红色,例如,通过减去sprite.color中的所有绿色和蓝色分量。

票数 1
EN

Stack Overflow用户

发布于 2012-08-06 07:18:27

这看起来像一个过滤问题,纹理被过滤为黑色,因为纹理中实际上只有1个像素,但GPU可能需要超过1个像素才能正确过滤纹理。

我会尝试使用2x2或4x4的纹理。这是完全可能的,这是一个最小纹理大小的问题,在任何情况下,1x1纹理是非常不寻常的。因为在这种情况下,你根本不会使用纹理,而只是用OpenGL ES (cocos2d中的ccDrawLine和其他)绘制一条线或填充多边形。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11819488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档