Sprite kit 脱离屏幕时,精灵套件从父级移除SKNode
我想知道如何删除我的SKNodes时,他们离开屏幕,以帮助我的游戏运行更顺利 如何在雪碧套件上执行此操作 非常感谢 下面是一个链接,指向一个答案,该答案删除了屏幕顶部的节点。您只需复制它以覆盖整个边界,并将所有墙设置为具有相同的contactBitMask值Sprite kit 脱离屏幕时,精灵套件从父级移除SKNode,sprite-kit,removechild,skspritenode,sknode,Sprite Kit,Removechild,Skspritenode,Sknode,我想知道如何删除我的SKNodes时,他们离开屏幕,以帮助我的游戏运行更顺利 如何在雪碧套件上执行此操作 非常感谢 下面是一个链接,指向一个答案,该答案删除了屏幕顶部的节点。您只需复制它以覆盖整个边界,并将所有墙设置为具有相同的contactBitMask值 基本上,逻辑是当SKSpriteNodes与位于可见屏幕外的物理体接触时,将其移除。以下是Swift 4中的一个简单解决方案: class GameScene: SKScene { let s = SKLabelNode(fontN
基本上,逻辑是当SKSpriteNodes与位于可见屏幕外的物理体接触时,将其移除。以下是Swift 4中的一个简单解决方案:
class GameScene: SKScene {
let s = SKLabelNode(fontNamed: "Chalkduster")
override func didMove(to view: SKView) {
s.text = "test"
s.fontSize = 50
addChild(s)
let moveRight = SKAction.moveBy(x: 40, y: 0, duration: 0.5)
s.run(SKAction.repeatForever(moveRight))
}
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
if ((s.parent != nil) && !intersects(s)) {
s.removeFromParent()
print("Sprite removed.")
}
}
}
您有一个水平移动的精灵(在本例中为SKLabelNode
,但任何精灵节点都可以),一旦超出帧边界,您就要删除该精灵
您可以使用
intersects
函数检查此项,然后从其父项中删除该精灵。在移除精灵之前,我还检查了它是否有父对象(通过检查s.parent
是否为零),因为我们只希望移除精灵一次。展示您自己已经尝试过的方法。类似问题请参见此答案:没问题。很高兴能帮上忙。快乐编码!