Comment puis-je détecter le toucher dans cocos2d?
Je développe un jeu en 2d pour iPhone en utilisant cocos2d.
J'ai utiliser beaucoup de petites sprite (image) dans mon jeu. Je veux toucher deux types similaires de sprite(image) et ensuite les deux sprite(image) sera caché.
Comment puis-je détecter le toucher dans un sprite(image) ?
source d'informationauteur Nasir
Vous devez vous connecter pour publier un commentaire.
Dans votre couche qui contient votre sprite, vous devez dire:
ensuite, vous pouvez utiliser les mêmes événements que vous pouvez utiliser dans une UIView, mais ils sont nommés un peu différemment:
Une meilleure façon de le faire est d'utiliser la boîte englobante sur le sprite lui-même (qui est un CGRect). Dans cet exemple de code, j'ai mis tous mes sprites dans un NSMutableArray et j'simple de vérifier si le sprite touch est dans la boîte englobante. Assurez-vous de mettre sur la touche de détection dans l'init. Si vous notez que j'ai aussi accepter/rejeter les touches sur le calque en retournant OUI(si j'utilise la touche) ou PAS(si je n'ai pas)
Suivantes Jonas instructions, et en ajoutant sur un peu plus ...
Vous devrez peut-être ajuster les axes x/y un peu pour tenir compte de la 'centré positionnement" dans Cocos
@david, votre code a quelques fautes de frappe pour les cocos 0.7.3 et 2.2.1, spécifiquement CGRectMake au lieu de CGMakeRect et [touch emplacement] est devenu [touch locationInView:le toucher.view].
voici ce que j'ai fait:
@Genericrich: CGRectContainsPoint travaille dans CocosLand en raison de l'appel 2 lignes ci-dessus:
La Cocos2D les objets à l'aide de l'OpenGL système de coordonnées, où 0,0) est le coin inférieur gauche et UIKit coordonnées (comme lorsque le contact est passé) ont 0,0 est en haut à gauche. convertCoordinate: c'est de faire le flip de UIKit à OpenGL pour vous.
J'ai été à essayer de comprendre comment obtenir de touche d'un sprite et trouvé ce fil.
Est-ce la bonne façon de détecter les sprite qui a été touché? Cela semble plutôt étrange façon de le faire par rapport à l'habitude de la sous-catégorie chemin en obj-c?
De sorte que tout le contact de détection de code est dans la couche de la classe?
Merci pour les pointeurs
Voici comment il a travaillé pour moi...
Où spriteSize est bien évidemment de la taille du sprite... 😛
c'est un bon tutoriel expliquant la base système tactile
http://ganbarugames.com/2010/12/detecting-touch-events-in-cocos2d-iphone/
tout d'abord, écrire
ensuite, vous avez besoin pour mettre en œuvre les fonctions ccTouchesEnded, ccTouchesBegan, etc
de ce que j'ai compris, vous voulez être en mesure de 'match' de deux sprites qui peuvent être sur les différentes coordonnées sur l'écran.
une méthode pour ce faire.. : (je suis sûr que theres beaucoup d'autres méthodes)
envisager d'avoir 2 variables globales.
donc à chaque fois une touche touche un sprite, vous utilisez le CGRectContainsPoint fonction qui est mentionné à plusieurs reprises pour trouver sprite qui a été touché. ensuite, vous pouvez enregistrer les balises de sprite dans l'une des variables globales.
Vous faites la même chose pour la deuxième touche, et puis vous comparez les 2 variables globales.
vous devriez être en mesure de comprendre le reste mais les commentaires si vous avez des problèmes.