2017-08-15 7 views
0

J'ai un marbre roulant et je voudrais que mon appareil photo le suive. Mon problème est que ma caméra tourne aussi autour de mon objet pendant qu'il tourne.Arrêter la caméra de tourner autour d'un parent en rotation

Voici mon code. Je pense qu'une contrainte de transformation devrait fonctionner mais je ne comprends pas comment cela fonctionne.

+0

Utilisez-vous SceneKits physique-système? iOS 11 ajoute un ['SCNDistanceConstraint'] (https://developer.apple.com/documentation/scenekit/scndistanceconstraint). Avez-vous besoin d'une solution pour iOS 10 aussi? – orangenkopf

+0

@orangenkopf Oui, j'aurais certainement besoin d'une solution pour iOS 10. Merci! – Sam

Répondre

0

Êtes-vous sûr de vouloir faire de cameraNode un enfant de marbre?

Parce que, selon SKNode docs: lorsque le système de coordonnées d'un noeud est mis à l'échelle ou une rotation, cette transformation est appliquée aussi bien à la propre contenu du nœud et à celui de ses descendants see SKNode

Donc, je suppose que vous devez un enfant caméra du marbre. Et pour achive que followint l'objet comportement de la caméra, vous pouvez mettre à jour la caméra coordonnées quelque part dans le code, qui déplace le marbre

+0

J'ai quelque chose changé voir la réponse suivante ... – Sam

0

Je non childed l'appareil photo à sphère et fait ma classe un protocole SCNSceneRendererDelegate et ajouté ceci à la boucle de rendu: -(void) renderer:(id)renderer updateAtTime:(NSTimeInterval)time { [cameraNode setPosition: SCNVector3Make(marbleNode.presentationNode.position.x, marbleNode.presentationNode.position.y + 5, marbleNode.presentationNode.position.z + 10)]; }

Si je connecte les coordonnées du marble.presentationNode, elles changent mais mon appareil photo ne bouge toujours pas!

+0

L'appareil photo et le marbre sont les deux enfants du même parent? Vous êtes vous-même le «délégué» de votre «SCNSceneView» afin que la méthode soit appelée? – orangenkopf

+0

Oui, j'ai. J'ai aussi mis scnView.isPlaying = YES ... J'ai aussi ajouté un NSLog pour retourner la position de marbleNode.presentationNode. Je vais répondre ci-dessous avec le code complet. Merci de votre aide! – Sam

+0

Apparemment, je ne suis plus autorisé à répondre aux questions! Donc je ne peux pas vous donner mon code @ # $!% & – Sam