gpt4 book ai didi

ios - touchesBegan If语句问题

转载 作者:行者123 更新时间:2023-11-28 06:03:27 27 4
gpt4 key购买 nike

我正在尝试检测一个节点是否是敌人。如果是,我想删除它。我正在尝试使用 touched nodes 名称来检测这一点。我能够检测到节点的名称是否为敌人,但我不知道如何删除它。谢谢您的帮助! :)

这里是所有相关代码:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!
let location = touch.location(in: self)
let nodes = self.nodes(at: location);
let name = nodes.first?.name;

if (name == "enemy") {
nodes.removeFromParent() // this doesn't work
}
}

@objc open func spawnEnemies() {
let randomNumber = randomBetween(min: Int(-150), max: Int(self.frame.width + 150))
print(randomNumber)
print(self.frame.width)
var enemy = SKSpriteNode(imageNamed: "triangle")
enemy.position = CGPoint(x: CGFloat(randomNumber), y: self.frame.height + 250)
enemy.name = "enemy";
enemy.zPosition = 6.0;

enemy.physicsBody?.allowsRotation = false

enemy.zRotation = 0
enemy.physicsBody?.affectedByGravity = false
enemy.physicsBody = SKPhysicsBody(texture: enemy.texture!, size: enemy.texture!.size())
enemy.physicsBody?.affectedByGravity = false
enemy.physicsBody?.isDynamic = true
enemy.physicsBody?.categoryBitMask = enemyCategory
enemy.physicsBody?.collisionBitMask = blockerCategory
enemy.physicsBody?.contactTestBitMask = blockerCategory
enemy.setScale(CGFloat(0.03))
addChild(enemy)
}

最佳答案

这部分代码有问题:

let nodes = self.nodes(at: location);
let name = nodes.first?.name;

if (name == "enemy") {
nodes.removeFromParent() // this doesn't work
}

您的变量 nodesSKNode 实例的数组;对整个数组(仅对其单个元素)调用SKNode 方法removeFromParent() 没有任何意义。

您已经成功测试了.first 元素的名称;执行相同的操作以将其删除:

let nodes = self.nodes(at: location);
let name = nodes.first?.name;

if (name == "enemy") {
nodes.first?.removeFromParent()
}

或者更好的方法(在一轮中移除多个敌人):

for node in self.nodes(at: location) {
if node.name == "enemy" {
node.removeFromParent()
}
}

最后,上面代码的更“快速”版本:

nodes.filter({ (node) -> Bool in
return node.name == "enemy"
}).forEach({ (enemy) in
enemy.removeFromParent()
})

关于ios - touchesBegan If语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48876949/

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