2016-07-18 2 views
1

Je rends une scène d'un fichier .dae (Collada). Dans la scène j'ai 4 nœuds.SceneKit - Comment faire rebondir un nœud dans un autre nœud (pêcher dans un bocal)

Le grand nœud est une «boîte» rectangulaire de forme étrange. J'ai besoin que les autres nœuds rebondissent à l'intérieur de ce nœud comme des poissons dans un aquarium.

J'ai le nœud rectangulaire mis en place comme suit:

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; 

Mes petits noeuds ne sont que des formes simples avec des organismes dynamiques.

Tout rebondit et se heurte les uns aux autres. Mon problème est que les plus petits nœuds ne rebondiront que sur le sommet du plus gros nœud de la «boîte». Comme si la boîte avait un couvercle dessus. Je ne peux pas obtenir les plus petits nœuds pour entrer dans l'espace vide dans la 'boîte'. C'est comme si les plus petits nœuds «poissons» ne pouvaient pas entrer dans le bol, car ils se fracassaient contre le couvercle invisible et se posaient simplement sur le dessus. J'espère que cela a du sens ... mon cerveau est frit en essayant de comprendre cela.

Répondre

1

La boîte a un "couvercle" dessus. C'est une boîte convexe, rien de concave, c'est ce dont vous avez besoin, une forme de boîte concave comme votre "bol". Pour créer ceci, vous devrez faire une "boîte" avec un "trou" en construisant cinq côtés d'une boîte et en laissant un côté (le dessus) ouvert. Veillez à donner à chaque côté une largeur/profondeur considérable afin que les objets plus petits ne passent pas simplement d'une image à l'autre.

+0

Merci. C'est ce que j'ai fini par faire. J'espérais que scenekit pourrait utiliser la vraie forme du modèle 3D. – mtb

+0

[SCNPhysicsBody bodyWithType: forme SCNPhysicsBodyTypeStatic: shape], définissez simplement le paramètre shap sur nil. Cela aura une géométrie plus similaire, créée automatiquement par sceneKit. – ooOlly