Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocos2d iphone 层间碰撞检测_Cocos2d Iphone - Fatal编程技术网

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。如果您对此感兴趣,请阅读以下链接:


只是检查一下。。。你想知道如何在不使用像花栗鼠或Box2d这样的物理引擎的情况下做到这一点吗?是的。现在我没有使用box2d,所以没有现成的解决方案。