如何在不杀死 child 的情况下从 parent SKSpriteNode 中删除 child SKSpriteNode

How to remove child SKSpriteNode from parent SKSpriteNode without killing child

我有龙抱蛋。 eggNode是dragonNode的一个child

龙在屏幕上水平飞行。

当小龙到达屏幕最右边时,小龙会重置到屏幕最左边。

我实现了龙把蛋丢到地上炮塔的位置。龙使用这个函数在 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,所以蛋会与龙一起重置到屏幕的左侧,即使它已被丢弃。

我该如何解决这个问题?有没有办法在不杀死鸡蛋的情况下从 parent 中删除 child?

如果不从场景中完全移除子项,则无法从父项中移除子项。我简单地解决了我的问题:

  1. 正在从我的代码中删除 parent/child 关系。
  2. 将 createEggNode 函数放入我的 shootProjectile 函数中。 (仍然在 touchesEnded 上调用函数)
  3. 把eggNode位置放在龙的位置