SCNNodeを複数回コピーしたいと思います。各ノードと異なる位置に異なる素材があります。しかし、同じ規模を維持する。したがって、私がコピーしたノードのスケールを変更すると、コピーされたノードはすべて変更されるはずです。SCNNodeをコピーして縮尺を維持することができます
次のコードでは、changeScale()を実行すると、コピーされたノードの縮尺が変更されません。
コピーされたすべてのノードの縮尺やジオメトリのサイズを一緒に変更する方法はありますか。
let mainNode = SCNNode()
let mainGeo = SCNPlane(width: CGFloat(4), height: CGFloat(4))
mainNode.geometry = mainGeo
for var i = 1; i <= 10; i += 1 {
let thisNode = mainNode.copy() as! SCNNode
thisNode.position = SCNVector3Make(Float(rx), Float(ry), Float(rz))
thisNode.geometry = thisNode.geometry!.copy() as? SCNGeometry
thisNode.geometry?.firstMaterial = thisNode.geometry?.firstMaterial!.copy() as? SCNMaterial
if i == 0 {
thisNode.geometry?.firstMaterial?.diffuse.contents = UIColor.blueColor()
} else {
thisNode.geometry?.firstMaterial?.diffuse.contents = UIColor.redColor()
}
scene.rootNode.addChildNode(thisNode)
}
func changeScale() {
mainNode.scale = SCNVector3Make(7, 7, 7)
}