从我以前的question,我相信克隆SCNNode是解决加载多个对象的问题的方法。但是,我意识到有什么问题。SCKNNode在SceneKit中的父子关系?
我不喜欢的东西
arrow = scnScene.rootNode.childNode(withName: "arrow", recursively:true)
arrow.rotation = SCNVector4(0, 0, 1, M_PI_2)
arrow.position = SCNVector3(x: 0, y: 0, z: -3);
let sign = SCNNode()
for i in 0..<10{
let node = arrow.clone()
node.position = SCNVector3(i+1,0,0)
sign.addChildNode(node)
}
arrow.addChildNode(sign)
我希望有显示了一排箭,但实际上有箭头(在x轴但实际上翻译影响y轴的一列,似乎克隆节点的坐标系统被改变)显示和所有的子对象旋转180度。为什么?
在Karl Sigiscar告诉我使用SCNReferenceNode之前,我不确定该如何使用它,它是否会实现我的目标?
更新:
我试图SCNReferenceNode这样的:
let scnScene = SCNScene()
if let filePath = Bundle.main.path(forResource: "arrowsign", ofType: "dae", inDirectory: "art.scnassets") {
// ReferenceNode path -> ReferenceNode URL
let referenceURL = NSURL(fileURLWithPath: filePath)
if #available(iOS 9.0, *) {
arrow = SCNReferenceNode(url: referenceURL as URL!)!
arrow.load()
arrow.rotation = SCNVector4(0, 0, 1, -M_PI_2)
arrow.position = SCNVector3(0,0,-5)
// Create reference node
for i in 0..<10{
let referenceNode : SCNReferenceNode = SCNReferenceNode(url: referenceURL as URL)!
referenceNode.load()
referenceNode.position = SCNVector3(i+1, 0, 0);
arrow.addChildNode(referenceNode)
}
}
}
scnScene.rootNode.addChildNode(arrow)
我不旋转的子节点,但他们自动旋转(-M_PI_2度),当我运行它。我在x轴上进行了翻译,但实际上有一列箭头显示,而不是一排箭头。这是孩子父母节点的功能吗?