Tôi đang cố gắng phát triển một trò chơi cơ bản và tôi có một cảnh với một số nút con được thêm vào nút gốc. Mỗi nút có một trong hai tên, hoặc là friend
hoặc enemy
.Làm thế nào để có được tất cả các nút con với tên trong Swift với Scene Kit
Nếu người dùng chạm vào một trong các nút enemy
Tôi muốn xóa tất cả các nút con có tên enemy
.
Tôi đã thử một vài thứ, nhưng dường như không thể làm được gì.
Trong chức năng touchesBegan
tôi:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!
let location = touch.location(in: gameView)
let hitList = gameView.hitTest(location, options: nil)
if let hitObject = hitList.first {
let node = hitObject.node
//This doesn't work
gameScene.rootNode.childNodes(passingTest: { (node, UnsafeMutablePointer<ObjCBool>) -> Bool in
node.removeFromParentNode()
}
}
Tôi cũng đã cố gắng sử dụng gameScene.rootNode.enumerateChildNodes(withName:)
nhưng tôi không thể nhận được rằng làm việc một trong hai.
Những gì tôi có thể được làm việc là nếu tôi làm điều gì đó như thế này trong đó thay vì:
if node.name == "enemy" {
node.removeFromParentNode()
}
Tuy nhiên điều này sẽ chỉ loại bỏ các nút duy nhất bị bắn trúng, không phải tất cả trong số họ. Làm thế nào tôi có thể nhận được tất cả các nút con với một tên nào đó trong Swift với Scene Kit?
enumerateChildNodes (withName: "kẻ thù", sử dụng: {nút, _ trong }) –
@ElTomato này mang lại cho tôi một lỗi 'Đối số bổ sung 'bằng cách sử dụng' trong cuộc gọi ' – maxshuty
' enumerateChildNodes (withName:) 'nên hoạt động, đây là một ví dụ: https://stackoverflow.com/a/26748966/1187415 –