2017-08-09 5 views
0

J'utilise SCNTransaction pour déplacer des objets de jeu. Plus précisément, lorsque le joueur tape quelque part sur l'écran, l'objet se déplace vers cette destination. Mais parfois, le joueur peut faire un mauvais mouvement, donc je veux créer un bouton qui peut mettre fin à toutes les transactions SCN. Toutefois, contrairement à SKAction, qui peut être terminé avec une simple ligne - self.removeAllActions(), SCNTransaction ne peut pas être interrompu ou même suspendu de l'extérieur conformément à la documentation Apple Developer Documentation. Pire encore, je trouve qu'avant que l'objet atteigne sa destination, sa position a déjà changé à la position de la destination, donc je ne peux pas simplement utiliser un autre SCNTransaction pour contrer celui en cours après avoir connu la position actuelle de l'objet.Comment terminer un SCNTransaction en cours?

Quelqu'un peut-il me donner quelques conseils? Merci beaucoup.

Répondre

0

SCNTransaction et ses principes d'animation suivent ceux de Core Animation et CATransaction. Pour arrêter une animation, vous devrez définir la valeur du modèle à la valeur de présentation actuelle. Par exemple:

node.position = node.presentation.position 

Mais si vous êtes familier avec SKAction et que vous souhaitez mettre en œuvre la même logique dans votre application SceneKit, vous pouvez jeter un oeil à SCNAction. Ils fonctionnent de manière identique.

+0

Merci beaucoup. Peut-être que l'utilisation de SCNAction est une meilleure solution ici. Je vais l'essayer. –