如何从父SKSpriteNode中删除子SKSpriteNode而不杀死子

时间:2016-06-23 00:58:36

标签: swift sprite-kit parent-child skspritenode skaction

我有一条龙拿着一个鸡蛋。 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)
}

然而,由于鸡蛋仍然是龙的孩子,鸡蛋将被龙重置到屏幕的左侧,即使它已经掉落。

我该如何解决这个问题?有没有办法在不杀死鸡蛋的情况下将孩子从父母身上移走?

1 个答案:

答案 0 :(得分:0)

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

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