以前のquestionから、私はSCNNodeのクローニングが複数のオブジェクトを読み込むという問題を解決する方法だと考えています。しかし、何か間違っていることが分かりました。SCNNode 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度回転します。どうして?
カールシギスカーがSCNReferenceNodeを使用するように指示する前に、私はそれをどのように使うべきか、私の目標を達成するかどうかはわかりません。
アップデート:私は子ノードを回転させていなかったが、私はそれを実行したとき、彼らは自動的に(-M_PI_2度)回転
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)
:
私はこのようなSCNReferenceNodeを試してみました。そして私はx軸で平行移動しましたが、実際には矢印の列ではなく、矢印の列が表示されています。これは、子 - 親ノードの機能ですか?