2017-03-13 1 views
1

J'utilise CoreMotion à mon avis pour obtenir les valeurs d'accélération et de rotation dans mon téléphone. Mon application a plusieurs vues qui utilisent un contrôleur de vue parce que je traite du transfert de données, donc j'ai configuré ma vue de l'accéléromètre/gyroscope avec UIViewController. Cependant, je veux montrer une image d'une balle qui se déplace à travers l'écran en fonction des valeurs que je sors de l'accéléromètre et du gyroscope. J'ai regardé à travers les tutoriels et cela semble être fait uniquement avec des jeux. Y a-t-il un moyen de montrer une balle qui utilise CoreMotion pour se déplacer sans utiliser SKScene?Est-il possible d'utiliser un SKScene avec un contrôleur UIView?

+0

Vous n'avez pas besoin de SKScene. Il existe des milliers d'applications qui utilisent UIViewAnimation à la place. Jetez un coup d'oeil au guide: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/AnimatingViews/AnimatingViews.html – Farini

+0

Comment proposez-vous d'utiliser SceneKit * sans * un contrôleur de vue? – Caleb

+0

@Caleb Désolé je ne suis pas, est-ce que c'est orienté vers moi? – timedwalnut

Répondre

1

Est-il possible d'utiliser un SKScene avec un contrôleur UIView?

Oui. Vous le faites probablement déjà sans le savoir.

Le pont entre SpriteKit et l'architecture de vue de Cocoa Touch est SKView. Beaucoup d'applications basées sur SpriteKit ont juste un contrôleur de vue dont la vue est un SKView, et puis ils manipulent différentes phases du jeu en faisant tout leur dessin dans SpriteKit et en changeant juste des scènes d'image-objet. Mais vous n'avez pas besoin de travailler de cette façon - vous pouvez mélanger SKView avec d'autres vues et contrôles, et vous pouvez utiliser autant de contrôleurs de vue que vous le souhaitez.

est ici un coup d'un SKView dans une autre vue et géré par un contrôleur de vue qui est intégré dans un contrôleur de navigation:

Hello, world!

La zone violette est une ancienne plaine UIView - que la zone noire est une vue SpriteKit.

Y a-t-il un moyen de montrer une balle qui utilise CoreMotion pour se déplacer sans utiliser SKScene?

Oui. Si tout ce que vous voulez faire est de déplacer une balle à travers l'écran, le UIKit animation built into UIView est presque certainement plus que suffisant.

1

Vous avez 2 choix. Soit essayer d'utiliser UIView construit dans les contrôles d'animation, comme dans l'exemple suivant:

UIView.animate(withDuration: 1) { 

    //Insert Animations Here 
} 

Sinon, vous pouvez toujours créer une vue à l'intérieur de la fenêtre principale de la vue du contrôleur et de faire ce point de vue un SKView et présenter une SKScene avec elle.

Quelque chose comme ce qui suit:

sceneView = SKView(frame: CGRect(x: 0, y: 0, width: 666, height: 500)) 
sceneView.backgroundColor = UIColor.black 
self.view.addSubview(sceneView) 

if let view = self.sceneView as SKView? { 
    // Load the SKScene from 'GameScene.sks' 
    if let scene = SKScene(fileNamed: "GameScene") { 
     // Set the scale mode to scale to fit the window 
     scene.scaleMode = .aspectFill 

     // Present the scene 
     view.presentScene(scene) 
    } 

    view.ignoresSiblingOrder = true 


} 

Remplacer la largeur et la hauteur avec des valeurs préférées. Est-il possible d'utiliser un SKScene avec un contrôleur UIView?

+0

Savez-vous comment utiliser les valeurs de l'accéléromètre pour déplacer la balle de façon continue, au lieu de l'animer pendant une certaine durée seulement? – timedwalnut

+0

Je ne connais pas très bien l'accéléromètre, mais vous pourriez être en mesure d'utiliser un sélecteur lorsque l'accéléromètre détecte une entrée. Alternativement, vous pouvez utiliser un objet Timer pour vérifier à plusieurs reprises pour la saisie, mais un sélecteur est probablement votre meilleur pari. – QPDev