SceneKit - 如何在另一个节点内反弹一个节点(鱼缸里的鱼)
SceneKit - How to bounce a node within another node (fish in fish bowl)
我正在从 .dae (Collada) 文件渲染场景。在场景中我有 4 个节点。
大节点是一个奇怪的长方形'box'。我需要其他节点像鱼缸里的鱼一样在这个节点内跳来跳去。
我将矩形节点设置如下:
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;
我的小节点只是带有动态主体的简单形状。
一切都反弹并相互碰撞很好..我的问题是较小的节点只会在较大的 'box' 节点的顶部反弹。好像盒子上有盖子。我无法让较小的节点在 'box' 中输入空的 space。所以它就像较小的 'fish' 节点无法进入碗中,因为它们撞到看不见的盖子,只是躺在上面。
我希望这是有道理的..我的大脑在想办法解决这个问题。
盒子上确实有一个 "lid"。它是一个凸盒,没有任何凹陷,这就是你需要的,凹盒形状就像你的"bowl"。
要创建它,您需要制作一个 "box" 和一个 "hole",方法是构建一个盒子的五个面并让一侧(顶部)打开。一定要给每一边相当大的 width/depth,这样较小的物体就不会简单地从一帧传递到下一帧。
我正在从 .dae (Collada) 文件渲染场景。在场景中我有 4 个节点。
大节点是一个奇怪的长方形'box'。我需要其他节点像鱼缸里的鱼一样在这个节点内跳来跳去。
我将矩形节点设置如下:
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;
我的小节点只是带有动态主体的简单形状。
一切都反弹并相互碰撞很好..我的问题是较小的节点只会在较大的 'box' 节点的顶部反弹。好像盒子上有盖子。我无法让较小的节点在 'box' 中输入空的 space。所以它就像较小的 'fish' 节点无法进入碗中,因为它们撞到看不见的盖子,只是躺在上面。
我希望这是有道理的..我的大脑在想办法解决这个问题。
盒子上确实有一个 "lid"。它是一个凸盒,没有任何凹陷,这就是你需要的,凹盒形状就像你的"bowl"。
要创建它,您需要制作一个 "box" 和一个 "hole",方法是构建一个盒子的五个面并让一侧(顶部)打开。一定要给每一边相当大的 width/depth,这样较小的物体就不会简单地从一帧传递到下一帧。