![](/img/trans.png)
[英]SpriteKit SKAction doesn't work after removing and readding a node
[英]Animate SKAction once before removing node
我正在制作游戏,并且正在执行didBeginContact函数中发生的一些事情。
基本上,我的家伙投掷了一个projectile
,当该projectile
连接时,我需要projectile
消失,击中的enemy
执行animation
,然后敌人消失。
我可以使敌人的动画播放一次然后消失,但我的弹丸不会消失,或者我可以使敌人和弹丸消失,但不显示动画。
到目前为止,这是我的代码:
if let node = contact.bodyB.node as? SKSpriteNode {
if node.parent != nil {
let moveUp = SKAction.moveBy(CGVector(dx: 0, dy: -100), duration: 0.5)
let fadeOut = RocketExp
let runBlock = SKAction.runBlock{ () -> Void in
node.removeFromParent()
}
let remove = SKAction.removeFromParent()
let moveAndFade = SKAction.group([moveUp, fadeOut])
let sequence = SKAction.sequence([fadeOut, runBlock, remove])
node.runAction(sequence)
node.removeFromParent()
}
}
我很确定node.removeParent()只会删除两个被命中的节点。
试试这个
let enemyCategory: UInt32 = 0x1 << 0
let missileCategory: UInt32 = 0x1 << 1
enemy.physicsBody?.categoryBitMask = enemyCategory
enemy.physicsBody?.contactTestBitMask = missileCategory
missile.physicsBody?.categoryBitMask = missileCategory
missile.physicsBody?.contactTestBitMask = enemyCategory
func didBeginContact(contact: SKPhysicsContact) {
if body1.categoryBitMask == enemyCategory && body2.categoryBitMask == missileCategory{
// your code here
body2.node?.removeAllActions()
body2.node?.removeFromParent()
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.