我有一条拿着蛋的龙。 EggNode 是 DragonNode 的子节点。
龙水平飞过屏幕。
当龙到达屏幕最右侧时,龙会重置到屏幕最左侧。
我已经实现了龙将鸡蛋扔到地面炮塔的位置。龙使用这个函数在touchesEnded中丢下了蛋。
func shootProjectile(){
//aim
let dx = turretNode.position.x - dragonNode.position.x
let dy = turretNode.position.y - dragonNode.position.y
let angle = atan2(dy, dx)
dragonProjectileNode.zRotation = angle
//Seek
let vx = turrentNode.position.x
let vy = turrentNode.position.y
let shootAction = SKAction.moveTo(CGPointMake(vx, vy),duration: 2.25)
dragonProjectileNode.runAction(shootAction)
}
但是,由于蛋仍然是龙的 child ,因此蛋将与龙一起重置到屏幕的左侧,即使在掉落之后也是如此。
我该如何解决这个问题?有没有办法在不杀死鸡蛋的情况下将 child 从 parent 身边带走?
最佳答案
如果不将子级完全从场景中移除,则无法将子级从父级中移除。我通过简单地解决了我的问题:
- 从我的代码中删除父/子关系。
- 将 createEggNode 函数放入我的 shotProjectile 函数中。 (仍然在touchesEnded上调用函数)
- 将eggNode位置放在龙的位置。
关于swift - 如何从父级 SKSpriteNode 中删除子级 SKSpriteNode 而不杀死子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37980597/