gpt4 book ai didi

ios - 无法使用 removeFromParent : Swift 删除点击的 spriteNode

转载 作者:行者123 更新时间:2023-11-28 07:07:49 24 4
gpt4 key购买 nike

我有一个 for 循环实例化 5 个 Sprite

for enemy in 1...5 {
negativeOnComing = SKSpriteNode(imageNamed: "Enemy3")
negativeOnComing.physicsBody = SKPhysicsBody(circleOfRadius: negativeOnComing.frame.size.width/2)
negativeOnComing.physicsBody?.dynamic = true
negativeOnComing.physicsBody?.categoryBitMask = PhysicsCategory.negativeOncoming
negativeOnComing.physicsBody?.fieldBitMask = PhysicsCategory.negativeOncoming
negativeOnComing.physicsBody?.contactTestBitMask = PhysicsCategory.mainCenterNode | PhysicsCategory.positiveOncoming
negativeOnComing.physicsBody?.node?.name = "negativeOnComing"
self.addChild(negativeOnComing)

}我已经将变量全局声明为

var negativeOnComing : SKSpriteNode!

现在我希望能够删除被点击的 Sprite 。为了尝试这个,我做了

 func removeNegativeOncoming(negativeOnComingR:SKSpriteNode){
println("Tapped")
childNodeWithName("negativeOnComing")?.removeFromParent()
}


override func touchesBegan(touches: NSSet, withEvent event: UIEvent){
var touch = touches.anyObject() as UITouch
var touchPosition = touch.locationInNode(self)
var enemyNodePosition = negativeOnComing.childNodeWithName("negativeOnComing")?.position
var enemyNodeFrame = negativeOnComing.frame
func removeEnemyNode (UITouch) -> SKSpriteNode {
if (enemyNodeFrame.contains(touchPosition) ) {
removeNegativeOncoming(negativeOnComing)
}
return negativeOnComing
}
mainSpriteMovement(touch)

}

现在这个函数实际上确实移除了 Sprite ,但是它并没有移除恰好被点击的 Sprite ,而是随机移除了 5 个 Sprite 中的一个。我的问题是我怎样才能只删除被点击到我身上的 Sprite ,而不仅仅是 5 个中的随机 Sprite 。希望这个问题问得很好并且可以理解。谢谢大家

最佳答案

你正在创建 5 个敌人,但每次都设置 negativeOnComing,所以这个变量最终只会保存对最后创建的节点的引用。

但这不是问题的原因。您正在使用 childNodeWithName 来查找要移除的节点 - 但您的所有敌人节点都具有相同的名称,因此您随机获得一个节点。

您可以简单地使用 nodeAtPoint 来确定哪个节点被点击 -

override func touchesBegan(touches: NSSet, withEvent event: UIEvent){
var touch = touches.anyObject() as UITouch
var touchPosition = touch.locationInNode(self)
var touchedNode = self.nodeAtPoint(touchPosition)
if (touchedNode.name == "negativeOnComing") {
touchedNode.removeFromParent()
}
mainSpriteMovement(touch)

}

关于ios - 无法使用 removeFromParent : Swift 删除点击的 spriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29813155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com