2016-08-28 4 views
3

Je suis très nouveau à SpriteKit, alors excuses pour une question débutant.SpriteKit origination et l'angle de geste

J'ai deux objets à partir desquels un utilisateur peut balayer en direction d'une "cible". J'ai besoin de déterminer le point d'origine (c'est à partir de laquelle de deux objets le toucher a été créé) et l'angle de balayage.

Je peux utiliser touchesBegan et touchEnded pour les calculer moi-même, mais je me demande s'il existe d'autres moyens de le faire avec les sprites.

Merci.

+1

Pourquoi avez-vous besoin d'une manière différente? Cela fonctionne comme vous le décrivez ... Montre où vous commencez, et où vous finissez. Facile à calculer un vecteur entre les deux points. – Kendel

+0

Peut-être Alex veut quelque chose de plus à ses mouvements d'objet :) voir ma réponse. – Fluidity

+0

Kendel, je n'ai pas besoin d'une manière différente, je n'ai pas voulu coder pour quelque chose qui a une solution prête, semble que c'est la manière la plus facile de le faire ... – Alex

Répondre

3

Il ya toujours une autre façon de faire quelque chose - c'est la programmation! Mais, comme Rube Goldberg montre ci-dessous, une autre façon peut-être pas le meilleur/plus simple:

enter image description here

L'utilisation touchesEnded vous faites un peu comme un geste « fling », qui peut être quelque peu limitée dans ses capacités . Exemple, Si vous voulez que l'objet gagne continuellement de la vélocité à certains f de x/fasse de petits changements de trajectoire (sans nécessairement avoir à lever le doigt), vous pouvez utiliser touchesMoved. Remplissez-le avec tous les calculs/fonctions que vous aimez.

Exemple: faites glisser un nœud avec votre contact:

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    //-Main touch processoereor 
    for touch in touches { 

     let TPOINT = touch.locationInNode(self) 
     my_super_cool_node!.position = TPOINT 

     // Put math stuff here, etc. 

    } 
} 

Cela vous donne beaucoup plus de contrôle sur ce qui se passe à l'image-objet du point A au point B.

Voici un bon tutoriel:

http://www.globalnerdy.com/2016/02/02/writing-ios-games-with-swift-and-sprite-kit-part-2-responding-to-touches/

Et des trucs d'Apple: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIResponder_Class/#//apple_ref/occ/instm/UIResponder/touchesMoved:withEvent:

Malheureusement, les meilleures choses dans SpriteKit vont nécessiter des implémentations intelligentes/mathématiques, et tout ne peut pas être fait avec l'éditeur de scène et les nœuds. Ce que vous parlez de faire est une fonction assez routinière (math), la formule de la distance, donc il est plutôt avantageux d'en faire un 10 réel, de sorte que vous puissiez le personnaliser et ne pas avoir à écrire manuellement un tonne d'un code pour chaque chose que vous voulez faire. SK rend les choses super faciles déjà. Faire même le monde de base salut avec des vaisseaux spatiaux spinny aurait été mille lignes de code (ou plus) dans la journée avec C++ Direct3d/OpenGL (et des tonnes de mathématiques avancées). L'éditeur SK est génial, et avec un peu de programmation sur le backend, vous pouvez réellement créer des jeux complets à partir de l'éditeur.

+0

Merci. J'ai fini par utiliser touchesBegan/Ended dans mon cas (simple), mais je vois votre point que touchesMoved donne plus de contrôle sur le chemin. – Alex

+0

@AlexZabrodskiy NP, j'ai imaginé une sorte de hockey ou de football (futbol) et je pensais, et s'il essayait de mettre un peu de spin dessus? touchesEnded ne fonctionnerait pas xD (comme un mouvement en zigzag) – Fluidity