我正在使用 cocos2d 制作游戏,并希望实现一个进度条来代表我的玩家的健康状况。我已经参考了如何以编程方式创建进度条,但 CCLayer 没有 .view 属性。有人可以指出我正确的方向或帮助我吗?
谢谢你,乔伊
我正在使用 cocos2d 制作游戏,并希望实现一个进度条来代表我的玩家的健康状况。我已经参考了如何以编程方式创建进度条,但 CCLayer 没有 .view 属性。有人可以指出我正确的方向或帮助我吗?
谢谢你,乔伊
获取以下图片:http: //i.stack.imgur.com/O5DRf.png。它是 2x30。我想制作一个 15 像素高的条形图。通常,尺寸为 1x15,但由于我假设您使用的是视网膜显示器,因此我们必须将这些尺寸加倍为 2x30。
用它创建一个 CCSprite,并将锚点设置为 ccp(0.0,0.5):
CCSprite *bar = [CCSprite spriteWithFile:@"MyBar.png"]; // Create it
bar.position = ccp(240,160); // Position it
bar.anchorPoint = ccp(0.0,0.5); // Anchor point
现在的问题是,血条有多长(最大)?假设它有 200 像素长。因此,100% = 200 像素长。让我们将其设置为 200 像素长:
bar.scaleX = 200; // The bar is 200 pixels long now
那么,50%的健康呢?那么,很明显,该属性.scaleX
应该是 100。
bar.scaleX = 100; // The bar is 100 pixels long now (50% health)
这几乎是您快速创建一个简单条所需的全部内容。
cocos2d 中有一个类“CCProgressTimer”可以做到这一点。希望它会有所帮助。
CCProgressTimer *lifeBar=[CCProgressTimer progressWithFile:@"lifeBar.png"];
lifeBar.type=kCCProgressTimerTypeHorizontalBarLR;
lifeBar.position=ccp(384,900);
lifeBar.percentage=100;
[self lifeBar z:20];
[lifeBar runAction:[CCProgressFromTo actionWithDuration:5.0 from:100.0 to:0.0]];
在 cocos2d 中,您可以使用[[CCDirector sharedDirector]openGLView]
而不是 .view
您可以将您的progressView 添加到它。这个 openGLView 的坐标系也是这样的,它的原点在左上角。
我最终制作了自己的进度条精灵,就像 Omega 推荐的那样。我为矩形“健康栏”轮廓创建了一个精灵,另一个表示一个微小的健康段,我根据需要在其中添加和删除它们以表示正确的健康。
CGPoint position = ccp(150, 450);
CCTexture2D *texture = [[CCTexture2D alloc] initWithImage:[UIImage imageNamed:@"healthSegment.png"]];
// Begin at 4 because health segments have tags 4-13
for(int i = 4; i < health + 4; i++)
{
CCSprite *healthBar = [CCSprite spriteWithTexture:texture];
[healthBar setPosition:position];
[self addChild:healthBar z:5 tag:i];
position.x += 10;
}