需要快速帮助。我正在创建我的第一个游戏 Cocos 2D 和 Box 2D,并且需要有关如何在碰撞期间显示文本的帮助。标准非常简单。使用石头和弹弓我需要击中从上面掉下来的物体。每个对象都有自己的点和特征。对于其中一个我需要实施,如果石头摧毁超过 3 个物体,“组合”这个词应该出现在屏幕上并逐渐淡出。将热切地等待您的回复和建议。
问候,
卡尔提克
需要快速帮助。我正在创建我的第一个游戏 Cocos 2D 和 Box 2D,并且需要有关如何在碰撞期间显示文本的帮助。标准非常简单。使用石头和弹弓我需要击中从上面掉下来的物体。每个对象都有自己的点和特征。对于其中一个我需要实施,如果石头摧毁超过 3 个物体,“组合”这个词应该出现在屏幕上并逐渐淡出。将热切地等待您的回复和建议。
问候,
卡尔提克
例如,在 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 ];
}
看起来相当简单明了:
// 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”(您的“魔术”数字),然后在您的“combo”节点上运行以下操作序列。
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 时,将“组合”文本重新定位到最后一个被销毁项目的位置,或者随机化它的位置,这样它并不总是在同一个地方,等等......
示例代码中的“节点”对象是仍然添加到场景中的 CCSprite 或 CCLabel,但只是切换了它的可见性(因为该项目很可能“经常”出现在场景中,最好将其留在场景中并改变它的可见性,而不是每次都创建一个新的并销毁它 - 如果它是一个不常见的项目,只需创建一个新的并销毁它......