Ceci est mon problème:HitTest pour SKSpriteNode
Je travaille avec SpriteKit et je veux ignorer l'événement touche quand il se produit dans un certain rectangle (empêcherons l'touchesBegan
). La façon dont je voudrais le faire est quelque chose comme "remplaçant le hitTestWithEvent
de UIView
". Mais je ne peux pas trouver une méthode similaire pour SKSpriteNode
qui pourrait ignorer l'événement et empêcher l'appel touchesBegan
.
Bien sûr
- je pouvais mettre
isUserInteractionEnabled
false mais il désactive l'image-objet non seulement toute une partie. - Je pourrais vérifier l'emplacement du toucher dans la méthode
touchesBegan
, mais ceci est à la fin - d'autres sprites sous la même position ne recevront plus cet événement. - J'ai également essayé d'utiliser
SKCropNode
, mais cela empêche simplement l'affichage de l'image-objet et les événements sont traités même sur la zone invisible.
Quelqu'un a-t-il une idée sur la façon d'empêcher une partie de l'image-objet de gérer un événement?
Merci pour votre réponse, mais je pense que c'est une solution de contournement très vilaine de la solution que je cherche. Cette approche nécessite de vérifier manuellement chaque spripte dans la scène :(Imaginez scène avec des dizaines ou des centaines de sprites - comment désordre ce commutateur serait.Je cherche une solution où vous pouvez activer l'interaction de l'utilisateur de sprite particulier et remplacer sa méthode de test de succès Cette approche vous permet de sous-classer SKSpriteNode et de gérer adéquatement le type de sous-classe à l'intérieur de la définition de la sous-classe – ukaszm
Eh bien, ce que vous proposez est pratiquement impossible car vous pourriez toucher un noeud qui ne connait pas directement le noeud que vous voulez toucher parce que vous êtes à l'intérieur de cette sous-classe, ou il connait son noeud parent mais le parent ne connait pas le bon noeud .. autrement dit si vous filmez sur le tas, vous devez connaître tout le tas: votre contact dans ce cas est comme une balle .. –