我正在制作一个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文件中。
答案 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.
}
}