Swift 访问几何体子节点Scenekit
我试图访问childnode:boxNode,然后使用平移手势识别器的输入旋转节点。我应该如何访问此节点以便可以操纵它?我应该在全局范围内声明多维数据集节点并进行修改吗?我是Swift的新手,因此如果此代码看起来不整洁,我向您道歉。我想在panGesture()函数中添加旋转动作。谢谢Swift 访问几何体子节点Scenekit,swift,scenekit,scene,child-nodes,Swift,Scenekit,Scene,Child Nodes,我试图访问childnode:boxNode,然后使用平移手势识别器的输入旋转节点。我应该如何访问此节点以便可以操纵它?我应该在全局范围内声明多维数据集节点并进行修改吗?我是Swift的新手,因此如果此代码看起来不整洁,我向您道歉。我想在panGesture()函数中添加旋转动作。谢谢 import UIKit import SceneKit class GameViewController: UIViewController { var scnView: SCNView! var scnS
import UIKit
import SceneKit
class GameViewController: UIViewController {
var scnView: SCNView!
var scnScene: SCNScene!
override func viewDidLoad() {
super.viewDidLoad()
setupView()
setupScene()
}
// override var shouldAutorotate: Bool {
// return true
// }
//
// override var prefersStatusBarHidden: Bool {
// return true
// }
func setupView() {
scnView = self.view as! SCNView
}
func setupScene() {
scnScene = SCNScene()
scnView.scene = scnScene
scnView.backgroundColor = UIColor.blueColor()
initCube()
initLight()
initCamera()
}
func initCube () {
var cubeGeometry:SCNGeometry
cubeGeometry = SCNBox(width: 1.0, height: 1.0, length: 1.0, chamferRadius: 0.0)
let boxNode = SCNNode(geometry: cubeGeometry)
scnScene.rootNode.addChildNode(boxNode)
}
func initLight () {
let light = SCNLight()
light.type = SCNLightTypeAmbient
let lightNode = SCNNode()
lightNode.light = light
light.castsShadow = false
lightNode.position = SCNVector3(x: 1.5, y: 1.5, z: 1.5)
scnScene.rootNode.addChildNode(lightNode)
}
func initCamera () {
let camera = SCNCamera()
let cameraNode = SCNNode()
cameraNode.camera = camera
cameraNode.position = SCNVector3(x: 0.0, y: 0.0, z: 5.0)
scnScene.rootNode.addChildNode(cameraNode)
}
func initRecognizer () {
let panTestRecognizer = UIPanGestureRecognizer(target: self, action: #selector(GameViewController.panGesture(_:)))
scnView.addGestureRecognizer(panTestRecognizer)
}
//TAKE GESTURE INPUT AND ROTATE CUBE ACCORDINGLY
func panGesture(sender: UIPanGestureRecognizer) {
//let translation = sender.translationInView(sender.view!)
}
}首先,您应该更新您的Xcode。看起来这是您正在使用的较旧的Swift版本<代码>SCNLightTypeAmbient在Swift 3中为
.ambient
因此,您应该通过指定节点名称来识别它们:
myChildNode.name=“FooChildBar”
然后可以调用父节点
让nodeyouarelooking=parentNode.childNode(名称为“FooChildBar”,递归:true)
也可以在场景的根节点上使用此选项
让nodeyouarelokingfore=scene.rootNode.childNode(名称为“FooChildBar”,递归:true)
它将查看场景中的所有节点,并返回您指定名称的节点