SceneKit:在运行时从模型创建SCNNode

时间:2018-09-04 17:11:46

标签: ios swift scenekit

我正在制作一个SceneKit游戏,并且我有一个包含模型的文件夹(file.obj,file.mtl,file.png)。我可以将模型拖到game.scn文件中。

let node = rootNode.childNode(withName: "boxTarget", recursively: true)!.flattenedClone()
node.isHidden = false

然后我寻找节点的名称,并创建一个flattenedClone。

但是我认为,有一种更好的方法可以在运行时动态创建带有模型的多个SCNNode,而无需将其添加到game.scn文件中。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,我确实挖了这样的东西:

func initGameNodes() {
        scene = SCNScene()

        gameNodes = SCNNode()
        gameNodes.name = "gameNodes"
        scene.rootNode.addChildNode(gameNodes)

        initLights()
        scene.rootNode.addChildNode(camera.cameraEye)
        scene.rootNode.addChildNode(camera.cameraFocus)

        camera.reset()
}

func loadCollada(sceneName: String, objName: String) -> SCNNode {
        let vScene = SCNScene(named: sceneName)!
        let gObject = vScene.rootNode.childNode(withName: objName, recursively: true)!
        return gObject
}

func createProjectileNodes(vMissile: weaponTypes) -> SCNNode {
            switch vMissile
            {
            case .defenseMissile:
                let vNode = loadCollada(sceneName: "art.scnassets/Models/missile.dae", objName: "Default")
                vNode.scale = SCNVector3Make(0.05, 0.05, 0.05)
                vNode.name = "Missile01"
                return vNode
            case . etc.
            }
}