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

标签 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)
}

但是,由于蛋仍然是龙的 child ,因此蛋将与龙一起重置到屏幕的左侧,即使在掉落之后也是如此。

我该如何解决这个问题?有没有办法在不杀死鸡蛋的情况下将 child 从 parent 身边带走?

最佳答案

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

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

关于swift - 如何从父级 SKSpriteNode 中删除子级 SKSpriteNode 而不杀死子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37980597/

相关文章:

json - "login"和 "sign up"Web 服务未使用 alamofire 快速提供所需的 json 输出

ios - 只允许 UIScrollView 缩放弹跳时放大,不缩小

swift - 当我在 Swift 中运行终端/shell 命令时发生了什么?

swift - Swift 中闭包表达式的等效性,例如 SKAction 完成

Swift:SpriteKit 没有以正确的大小渲染 Sprite

javascript - 根据子级内容隐藏父级

objective-c - 将Vision人脸检测VNFaceLandmarkRegion2D点转换为帧坐标以进行缩放

ios - 如何获得移动的 SKSpriteNode 的位置?

java - Hibernate无法删除父/子自连接实体

c++ - execlp() 输出无法使用管道重定向到 stdout