Tôi bắt đầu học Swift2 để phát triển trên iOS bằng SpriteKit và tôi dường như không thể phát hiện được nếu tôi chạm vào phần hiển thị của Sprite.Phát hiện cảm ứng bên trong hộp giới hạn (mặt nạ alpha) của Sprite bằng SpriteKit
Tôi có thể tìm thấy trong đó nút cảm động như thế này:
let touchedNode = self.nodeAtPoint(location)
Nhưng điều này phát hiện các liên lạc trên sprite. Tôi muốn phát hiện các liên lạc trên phần "không minh bạch" của sprite chỉ.
tôi đã cố gắng tạo ra một PhysicsBody với một hộp bounding alpha mặt nạ và thử nghiệm nếu khung giới hạn của các nút tôi đã chọn chứa các vị trí của các liên lạc như thế này:
sprite.physicsBody = SKPhysicsBody.init(texture: sprite.texture!, size: sprite.size)
sprite.physicsBody?.affectedByGravity = false
if (touchedNode.containsPoint(location)){
Nhưng nó đã không giúp đỡ. Nếu tôi nhấp vào một phần trong suốt của sprite của tôi, sự kiện vẫn kích hoạt.
Tài liệu nói rằng "Một cơ thể vật lý mới được tạo bao gồm tất cả các texels trong kết cấu có giá trị alpha không phải là.", Vậy nó có hoạt động không?
Cảm ơn thời gian của bạn.
PS: Tôi cũng đã cố gắng rộng rãi hơn trên ngưỡng alpha của mình, nhưng điều này cũng không hoạt động (trong trường hợp tính minh bạch của tôi không hoàn hảo).
UPDATE:
Để thêm một chút chi tiết, Tôi đang xây dựng một trình soạn thảo cấp. Điều này có nghĩa rằng tôi sẽ tạo ra nhiều nút, tùy thuộc vào những gì người dùng chọn, và tôi cần để có thể chọn/di chuyển/xoay/etc các nút đó. Tôi thực sự đang sử dụng SKSpriteNodes vì hình ảnh PNG của tôi được tự động thêm vào xcassette theo cách đó. Tôi quyết định sử dụng hộp giới hạn Alpha Mask của PhysicsBody, vì giá trị này được hiển thị trong Trình chỉnh sửa cảnh (Xcode) khi bạn chọn một nút và khi được chọn, Mặt nạ Alpha sẽ tô sáng chính xác phần của Sprite mà tôi muốn có thể phát hiện một liên lạc bên trong.
Nếu tôi đang sử dụng sai ý tưởng/kỹ thuật, vui lòng cho tôi biết. Điều này là có thể vì tôi chỉ bắt đầu sử dụng Swift và SpriteKit.
UPDATE 2
tôi truy vấn các physicsWord (theo khuyến cáo) để có được những physicsBody đúng và có tên của nút gắn liền như thế này:
let body = self.physicsWorld.bodyAtPoint(location)
print(body?.node?.name)
Nhưng điều này vẫn còn in tên của nút ngay cả khi tôi chạm vào bên ngoài hộp giới hạn, điều này không có ý nghĩa với tôi.
Xin cảm ơn sự giúp đỡ của bạn.
Bạn đã tìm thấy cách tốt để thực hiện việc này chưa? – Confused