我曾经写过一个函数,我在场景中添加了几何圆锥。它看起来像这样:
func addZombies(i:Int, x: Float, y: Float, z: Float)
{
let node = SCNNode()
node.geometry = SCNCone(topRadius: 0.0, bottomRadius: 1, height: 2)
node.position = SCNVector3(x, y, z)
sceneView.scene.rootNode.addChildNode(node)
nodes.append(node)
}
其中nodes是一个存储SCNNodes的数组。一切正常。如果我移动了,锥体将具有它们原来的确切位置,这是一个真正的“现实”。
但是,我购买了一个漂亮的僵尸 3D 模型,并尝试将锥体更改为模型。我找到了某种解决方案并尝试自己实施。这就是我想出的:
func addZombies(i:Int, x: Float, y: Float, z: Float)
{
guard let zombieScene = SCNScene(named: "art.scnassets/StrongZombie.DAE") else { return }
let zombieNode = SCNNode()
let zombieSceneChildNodes = zombieScene.rootNode.childNodes
for childNode in zombieSceneChildNodes
{
zombieNode.addChildNode(childNode)
}
zombieNode.position = SCNVector3(x, y, z)
zombieNode.scale = SCNVector3(0.5, 0.5, 0.5)
//zombieNode.look(at: (sceneView.pointOfView?.position)!)
sceneView.scene.rootNode.addChildNode(zombieNode)
nodes.append(zombieNode)
}
不幸的是,即使它在特定位置创建僵尸,如果我移动,僵尸也会跟着我“移动”。它们与移动的相机相关,这对我来说是不受欢迎的。谁能帮我吗?我希望它们像锥体一样。提前谢谢