Cocos2d iphone 层间碰撞检测
我有几个Cocos2d iphone 层间碰撞检测,cocos2d-iphone,Cocos2d Iphone,我有几个层,其中包含CCSprites。 我有一个主CCScene,在开始时添加这些层。 我必须检查来自不同层的精灵之间的碰撞 我知道如何检查与CGRectContains的简单碰撞,我的问题是,我需要一个类来保存所有层的所有精灵位置,并检查每个勾选的碰撞 问题:创建这样一个类的正确方法是什么,该类保存/检查场景中所有层的精灵 谢谢 如果您不关心空空间,那么您可以为每个层设置self.contentSize。您可以这样做: CGRect rect=CGRectNull; for(CCNode*s
层
,其中包含CCSprites
。
我有一个主CCScene
,在开始时添加这些层。
我必须检查来自不同层的精灵之间的碰撞
我知道如何检查与CGRectContains
的简单碰撞,我的问题是,我需要一个类来保存所有层的所有精灵位置,并检查每个勾选
的碰撞
问题:创建这样一个类的正确方法是什么,该类保存/检查场景中所有层的精灵
谢谢 如果您不关心空空间,那么您可以为每个层设置self.contentSize。您可以这样做:
CGRect rect=CGRectNull;
for(CCNode*self.children中的节点){
rect=CGRectUnion(rect,node.boundingBox);
}
self.contentSize=rect.size;
但是,如果您关心空的空间,那么您需要使用以下内容:
//将其放在类实现之外的某个地方
静态内联布尔CClayerPrinterSectSCClayer(CClayerL1、CClayerL2){
用于(l1.子节点中的CCNode*n1){
for(l2.子节点中的CCNode*n2){
CGRect r1=n1.boundingBox;
CGRect r2=n2.boundingBox;
r1.origin=[l1.parent convertToNodeSpace:r1.origin];
r2.origin=[l2.parent convertToNodeSpace:r2.origin];
if(cGRECT(r1,r2)){
返回YES;
}
}
}
返回否;
}
但你必须明白,所有精灵(甚至圆)实际上都是矩形。因此,如果您需要非常精确的碰撞检测,那么您应该在项目中使用box2d。如果您对此感兴趣,请阅读以下链接: