Ios4 如何在碰撞期间显示文本?

Ios4 如何在碰撞期间显示文本?,ios4,cocos2d-iphone,box2d-iphone,Ios4,Cocos2d Iphone,Box2d Iphone,我需要一个快速的帮助。我正在创建我的第一个游戏Cocos2D和Box 2D,需要关于如何在碰撞过程中显示文本的帮助。标准非常简单。我需要用一块石头和一把弹弓来击中从上面掉下来的物体。每个对象都有自己的点和特征。对于其中一个我需要实现的,如果石头破坏了3个以上的对象,单词“combo”应该出现在屏幕上并逐渐淡出。我们将热切等待您的回复和建议 问候, Karthik似乎相当直截了当和简单: // use this to keep track of how many stones are destro

我需要一个快速的帮助。我正在创建我的第一个游戏Cocos2D和Box 2D,需要关于如何在碰撞过程中显示文本的帮助。标准非常简单。我需要用一块石头和一把弹弓来击中从上面掉下来的物体。每个对象都有自己的点和特征。对于其中一个我需要实现的,如果石头破坏了3个以上的对象,单词“combo”应该出现在屏幕上并逐渐淡出。我们将热切等待您的回复和建议

问候,


Karthik似乎相当直截了当和简单:

// use this to keep track of how many stones are destroyed, 
// every time a stone is destroyed, increment it by 1
int count = 0;
要显示“combo”,您可能需要使用图形或标签——这在cocos2d示例中有介绍,因此我不会在这里解释如何显示它

从这里开始,在“tick”回调中,只需检查“count”的值,如果它大于或等于“3”(您的“magic”数字),则在“combo”节点上运行以下操作序列

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


示例代码中的“节点”对象是一个CCSprite或CCLabel,它仍然添加到场景中,但只是切换了它的可见性(因为此项很可能“经常”出现在场景中)最好将它留在场景中并更改其可见性,而不是每次创建一个新项目并销毁它-如果它是一个不常见的项目,只需创建一个新项目并销毁它…

例如,在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 ];
            }   

非常感谢大卫。我有一个想法,但你展示了如何让它成为现实。但是我还有一个问题。因为我有不同的物体坠落,我能确定发生的第二次碰撞与第一次碰撞不是同一个精灵吗。例如:a,b,c从上面坠落。如果3个或更多的a体被摧毁,组合体应该出现,怎么做确保b或c在该循环中没有碰撞。只是一个信息:我已为所有2个对象提供了差异标记。如果a、b和c都已标记-只需比较标记。为每个“图像”(视觉外观)使用单独的标记然后根据标签是否匹配执行逻辑。嗨,伙计们。我们如何在使用ContactListener的Box2D中显示碰撞时的文本?你实现了类似弹弓的愤怒的小鸟游戏。如果是,意味着plz共享你的代码。
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 ];
            }