Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
Ios SceneKit-如何在另一个节点内反弹节点(鱼缸中的鱼)_Ios_Objective C_Scenekit_Collada - Fatal编程技术网

Ios SceneKit-如何在另一个节点内反弹节点(鱼缸中的鱼)

Ios SceneKit-如何在另一个节点内反弹节点(鱼缸中的鱼),ios,objective-c,scenekit,collada,Ios,Objective C,Scenekit,Collada,我正在从.dae(Collada)文件渲染场景。在场景中,我有4个节点 大节点是一个奇数形状的矩形“长方体”。我需要其他节点像鱼缸里的鱼一样在这个节点内反弹 我将矩形节点设置如下: NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys: SCNPhysicsShapeTypeKey, SCNPhysicsShapeTypeConcavePolyhedron

我正在从.dae(Collada)文件渲染场景。在场景中,我有4个节点

大节点是一个奇数形状的矩形“长方体”。我需要其他节点像鱼缸里的鱼一样在这个节点内反弹

我将矩形节点设置如下:

NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                            SCNPhysicsShapeTypeKey, SCNPhysicsShapeTypeConcavePolyhedron, nil];

SCNPhysicsShape *shape = [SCNPhysicsShape shapeWithNode:self.box1 options:dictionary];

SCNPhysicsBody *body = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeStatic shape:shape];

self.box1 = [self.scene.rootNode childNodeWithName:@"box1" recursively:NO];
self.box1.physicsBody = body;
我的较小节点只是带有动态实体的简单形状

所有的东西都会弹来弹去,相互碰撞。。我的问题是,较小的节点只会在较大的“长方体”节点的顶部反弹。好像盒子上有盖子似的。我无法让较小的节点进入“框”中的空白区域。因此,就好像较小的“鱼”节点无法进入碗中,因为它们撞在看不见的盖子上,只是躺在上面

我希望这是有道理的。。想弄明白这一点,我的脑子都快炸了。

盒子上确实有一个“盖子”。它是一个凸面的盒子,没有凹面,这就是你所需要的,一个凹面的盒子形状就像你的“碗”


要创建此对话框,您需要创建一个带有“孔”的“盒子”,方法是创建一个盒子的五个侧面,并保持一侧(顶部)打开。确保为每一面提供相当大的宽度/深度,以便较小的对象不会简单地从一帧传递到下一帧

谢谢。这就是我最后做的。我希望scenekit可以使用3D模型的真实形状。[SCNPphysisBody Body WithType:SCNPphysisBody TypeStatic shape:shape],只需将shap参数设置为零。这将得到一个更相似的几何体,由sceneKit自动创建。