Zaczynam uczyć się Swift2 rozwijać na iOS przy użyciu SpriteKit i nie mogę wykryć, czy dotknąłem widocznej części mojego Sprite.Wykrywanie dotyku wewnątrz obwiedni (maska alfa) Sprite przy użyciu SpriteKit
znajdę której węzeł był poruszony tak:
let touchedNode = self.nodeAtPoint(location)
Ale to wykryć dotyk na ikonki. Chciałbym wykryć dotyk tylko na "nieprzejrzystej" części duszka.
Próbowałem tworzenia PhysicsBody z obwiedni maski alfa i testowanie, jeśli obwiednia węzła I wybranego zawiera lokalizację w dotyku tak:
sprite.physicsBody = SKPhysicsBody.init(texture: sprite.texture!, size: sprite.size)
sprite.physicsBody?.affectedByGravity = false
if (touchedNode.containsPoint(location)){
Ale to nie pomogło. Jeśli kliknę przezroczystą część mojego duszka, zdarzenie nadal się uruchamia.
Dokumentacja mówi: "Utworzono nowy korpus fizyki, który zawiera wszystkie tekły w teksturach, które mają niezerową wartość alfa.", Więc czy to nie powinno działać?
Dzięki za poświęcony czas.
PS: Próbowałem też być bardziej hojny na progu alfa, ale to też nie zadziałało (na wypadek, gdyby moja przezroczystość nie była doskonała).
UPDATE:
dodać trochę więcej szczegółów, buduję edytor poziomów. Oznacza to, że utworzę wiele węzłów, w zależności od tego, co wybierze użytkownik, i muszę mieć możliwość wybrania/przeniesienia/obrócenia/etc tych węzłów. W rzeczywistości używam SKSpriteNodes, ponieważ moje obrazy PNG są automatycznie dodawane w xcassette w ten sposób. Postanowiłem użyć ramki ograniczającej Alpha Mask PhysicsBody, ponieważ ta wartość jest pokazywana w edytorze sceny (Xcode) po wybraniu węzła, a po jej zaznaczeniu Maska Alfa podświetla dokładnie część mojego Sprite, którą chcę móc wykryć dotyk w środku.
Jeśli używam niewłaściwych pomysłów/technik, proszę powiedz mi. Jest to możliwe, ponieważ dopiero zaczynam używać Swift i SpriteKit.
UPDATE 2
I zapytaliśmy o physicsWord (zgodnie z zaleceniami), aby uzyskać prawo physicsBody i dostał imię załączonym węzła tak:
let body = self.physicsWorld.bodyAtPoint(location)
print(body?.node?.name)
Ale to nadal jest drukowanie nazwa węzła, nawet jeśli dotknę poza obramowaniem, co nie ma dla mnie żadnego sensu.
Dziękuję i tak za pomoc.
Znalazłeś dobry sposób na zrobienie tego? – Confused