Я рендеринга сцены из файла .dae (Collada). Внутри сцены у меня 4 узла.SceneKit - Как отскочить узел в другом узле (рыба в рыбной чаше)
Большой узел представляет собой прямоугольную коробку нечетной формы. Мне нужно, чтобы другие узлы отскакивали внутри этого узла, как рыба в аквариуме.
У меня есть прямоугольный узел установлен следующим образом:
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;
Мои меньшие узлы только простые формы с динамическими телами.
Все отскакивает и сталкивается друг с другом. Моя проблема в том, что меньшие узлы будут только отскакивать в верхней части большего «ящика» узла. Как будто на коробке была крышка. Я не могу заставить меньшие узлы войти в пустое пространство в поле. Таким образом, это похоже на то, что меньшие «рыбные» узлы не могут войти в чашу, поскольку они разбиваются о невидимую крышку и просто лежат сверху.
Надеюсь, это имеет смысл. Мой мозг жарится, пытаясь понять это.
Спасибо. Вот что я в итоге сделал. Я надеялся, что сценарий сможет использовать истинную форму 3D-модели. – mtb
[SCNPhysicsBody bodyWithType: SCNPhysicsBodyTypeStatic shape: shape], просто установите параметр shap в nil. Это позволит получить более схожую геометрию, созданную функцией sceneKit автоматически. – ooOlly