繁体   English   中英

在删除节点之前对SKAction进行一次动画处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM