2017-02-03 6 views
0

Я сделал файл SCN под названием arrowsign.scn, который содержит стрелку, как на картинке ниже: enter image description hereКак загрузить несколько объектов в SceneKit?

я написал кусок кода для загрузки объекта со стрелкой:

SCNNode *node = [SCNNode node]; 
SCNNode *a[10]; 
for (int i = 0;i<10;i++){ 
    a[i] = [scene.rootNode childNodeWithName:@"arrowsign" recursively:NO];//just one arrow in arrowsign.scn 
    a[i].scale = SCNVector3Make(0.15f, 0.15f, 0.15f); 
    a[i].position = SCNVector3Make(1+i, 0, 0); 
    [node addChildNode:a[i]]; 
} 
[scene.rootNode addChildNode:node]; 

В идеале будет быть рядом со стрелками, отображаемыми на экране. Тем не менее, отображается только одна стрелка. Как я могу достичь своей цели?

ответ

2

Я думаю, что вы можете просто клонировать узел

let sphereNode2 = sphereNode.clone() 
sphereNode2.position = SCNVector3(x: 0, y: 0, z: -20) 
scene.rootNode.addChildNode(sphereNode2) 
+0

SCNNode * sign = [scene.rootNode childNodeWithName: @ "arrowsign" рекурсивно: ДА]; sign.scale = SCNVector3Make (0,15f, 0,15f, 0,15f); sign.position = SCNVector3Make (1, 0, 0); SCNNode * parentNode = [узел SCNNode]; для (int i = 0; i <10; i ++) { SCNNode * node = [sign clone]; node.position = SCNVector3Make (1 + i, 0, 0); [parentNode addChildNode: node]; } [scene.rootNode addChildNode: parentNode]; Еще одна стрелка отображает ... – OtakuFitness

+0

Я использую swift для записи снова, и это работает! – OtakuFitness

2

Вместо создания новых экземпляров SCNNode создайте экземпляры SCNReferenceNode, чтобы загрузить их .scn-файл.

+0

Я сделал SCNReferenceNode * а [10], но есть еще только одна стрелка отображения. – OtakuFitness

+0

На самом деле я не уверен, как загрузить мой .scn-файл в SCNReferenceNode. Возможно, это вызывает проблему «одной стрелки». – OtakuFitness

+0

Проверьте это [thread] (http://stackoverflow.com/questions/39029865/scenekit-cannot-add-scnreferencenode-programmatically-though-works-in-xcode-sce) –