gpt4 book ai didi

swift - 如何在 didBeginContact 中删除 SKSpriteNode

转载 作者:行者123 更新时间:2023-11-30 10:18:40 25 4
gpt4 key购买 nike

如何在 didBeginContact 方法中删除 SKSpriteNode?我将节点作为全局变量(节点:SKSpriteNode!),并且我在几个函数中更改了它的位置。但是,当它与另一个物体接触时,我想将其从屏幕上移除。我应该如何做到这一点?

 func didBeginContact(contact: SKPhysicsContact) {
let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask

switch contactMask {
case ColliderType.Star.rawValue | ColliderType.Cup.rawValue:
println("")
default:
return

最佳答案

我不明白当屏幕上有多个球时为什么要使用全局变量。

如果categoryBitMask球的个数是 bitMaskBall ,您可以从父级中删除传递给 didBeginContact 的联系人对象中的节点。

func didBeginContact(contact: SKPhysicsContact) {

var ball : SKNode? = nil
// Change it to categoryBitMask of the ball sprite
if contact.bodyA.categoryBitMask == bitMaskBall && contact.bodyB.categoryBitMask == bottomBitMask {
ball = contact.bodyA.node
}
else if contact.bodyB.categoryBitMask == bitMaskBall && contact.bodyA.categoryBitMask == bottomBitMask {
ball = contact.bodyB.node
}

ball?.removeFromParent()

}

条件使用categoryBitMask检查参与接触的任何物体是否是球。球的。然后我们提取碰撞体内部的节点,最后将其删除。

关于swift - 如何在 didBeginContact 中删除 SKSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28594840/

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