如何在碰撞过程中显示文字?

时间:2010-12-27 08:28:34

标签: ios4 cocos2d-iphone box2d-iphone

需要快速帮助。我正在创建我的第一个游戏Cocos 2D和Box 2D,并且需要有关如何在碰撞期间显示文本的帮助。标准很简单。使用石头和弹弓我需要击中从上面落下的物体。每个对象都有自己的点和功能。对于其中一个我需要实现的,如果石头摧毁超过3个物体,“组合”这个词应该出现在屏幕上并逐渐淡出。将热切期待您的回复和建议。

此致

KARTHIK

2 个答案:

答案 0 :(得分:1)

例如在cgintersectrect中检测你的碰撞更新,你必须写这样的文本。

示例代码: -

if (CGRectIntersectsRect(projectileRect, targetRect)) {
                [targetsToDelete addObject:target];
                CCMenuItem *pause_menu = [CCMenuItemImage itemFromNormalImage:@"pause.png" selectedImage:@"pause.png" target:self selector:@selector(pauseGame:)];
                CCMenu *menu = [CCMenu menuWithItems: pause_menu, nil];
                menu.position = ccp(460, 15);
                [self addChild:menu ];
            }   

答案 1 :(得分:0)

看起来相当简单明了:

// use this to keep track of how many stones are destroyed, 
// every time a stone is destroyed, increment it by 1
int count = 0;

要显示“组合”,您可能需要使用图形或标签 - 这在cocos2d示例中有所介绍,因此我不会在此解释如何显示它。

从这里,在你的“tick”回调中,只需检查“count”的值,如果它大于或等于“3”(你的“魔法”数字),那么在你的“组合”上运行以下动作序列“节点。

CCFadeIn *fadeIn = [CCFadeIn actionWithDuration: 0.25f];
CCFadeOut *fadeOut = [CCFadeOut actionWithDuration: 0.0125f];
CCDelayTime *delay = [CCDelayTime actionWithDuration: 0.5f];
[node runAction: [CCSequence actions: fadeIn, delay, fadeOut, nil];

这组动作将使节点淡出超过四分之一秒,等待半秒,然后在八分之一秒内消失。您可以根据需要为代码调整计时。当计数器是>时,你可以做一些额外的事情。 3将“组合”文本重新定位到最后一个项目的位置,或者随机化它的位置,使它不总是在同一个地方等等......

示例代码中的“node”对象是一个CCSprite或CCLabel,它仍然会添加到你的场景中,但只是让它的可见性被切换(因为这个项目在场景中出现的可能性“经常”,最好留下它在场景中并改变它的可见性,而不是创建一个新的并且每次都将其销毁 - 如果它是一个不常见的项目,只需创建一个新的,并销毁它......