如何在不杀死 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?
如果不从场景中完全移除子项,则无法从父项中移除子项。我简单地解决了我的问题:
- 正在从我的代码中删除 parent/child 关系。
- 将 createEggNode 函数放入我的 shootProjectile 函数中。 (仍然在 touchesEnded 上调用函数)
- 把eggNode位置放在龙的位置
我有龙抱蛋。 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?
如果不从场景中完全移除子项,则无法从父项中移除子项。我简单地解决了我的问题:
- 正在从我的代码中删除 parent/child 关系。
- 将 createEggNode 函数放入我的 shootProjectile 函数中。 (仍然在 touchesEnded 上调用函数)
- 把eggNode位置放在龙的位置