Ich erstellte einen leeren Knoten und fügte dem leeren Knoten eine Gruppe von Knoten hinzu und fügte diese schließlich meinem Wurzelknoten hinzu. Danach erstelle ich einen Kamera-Knoten wie unten gezeigt. Ich versuche, meiner Scenekit-App eine Funktion hinzuzufügen, bei der die Kamera sich bewegt und den Fokus auf diesen Knoten legt, wenn ein Benutzer auf einen Knoten klickt. In meiner HandleTap-Funktion versuche ich, die Position des Knotens zu ermitteln und dann die Kamera an dieser Position zu fixieren, aber es funktioniert nicht. Irgendwelche Vorschläge?Wie kann ich meinen Kameraknoten auf einen angezapften Knoten fokussieren? (SceneKit)
//snippet
var emptyNode = SCNNode()
emptyNode.addChildNode(Node)
rootNode.addChildNode(emptyNode)
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3(1,0,10)
rootNode.addChildNode(cameraNode)
func handleTap(recognizer: UITapGestureRecognizer) {
let location = recognizer.locationInView(sceneView)
let hits = sceneView!.hitTest(location, options: nil)
if let tap = hits.first?.node {
tappNode = tap
myScene?.cameraNode.position = tappNode.position
}
EDIT
Also, ich mache ein wenig Fortschritte, aber ich kann immer noch nicht die Position meines Knoten herauszufinden. Der aktualisierte Code ist unten angegeben. Ich habe einen neuen Knoten erstellt und eine Kamera an ihn angeschlossen. Dieser Knoten wird dann als Kind zu dem Abgriffknoten hinzugefügt. Ich kann immer noch nicht die Position des Abgriffsknotens im Kontext des leeren Knotens erhalten.
let cameraNode = SCNNode()
cameraNode.name = "cameraNode"
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3Make(1,0,10)
tappNode.addChildNode(cameraNode)
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(3.0)
SCNTransaction.setCompletionBlock() {
print("done")
}
sceneView!.pointOfView = cameraNode
SCNTransaction.commit()