1
我正在制作一个2D侧滚动器。SKNode在删除之前执行动画
有从右边产卵的火箭。
当我在一个扔一个弹丸,我希望它:
- 喜欢它的行为一直打,也许是小幅的矢量路径,闪红,诸如此类的事情
- 弹丸上移动应该插入火箭,就像一个箭头(node.position = RocketNode.position一直不幸为我工作:|)
- 如果敌人HP是0,执行死亡动画
- 死后动画,删除火箭和弹丸
下面是我一直在努力工作的代码,我很困惑哪个节点是哪个节点,以及如何针对两个不同的节点... bodyA和bodyB执行相同的事情也是相当低效的...
这一切都在didBeginContact
功能......我留下了一些评论代码,疣所有。
case projectileGroup | rocketgroup:
if contact.bodyA.categoryBitMask == rocketgroup || contact.bodyB.categoryBitMask == rocketgroup
{
//projectileObject.physicsBody?.velocity = CGVectorMake(0 , 0)
if Model.sharedInstance.sound == true
{
runAction(RocketExplosionPreload)
}
Model.sharedInstance.totalscore = Model.sharedInstance.totalscore + Model.sharedInstance.score
RocketExplodeTexturesArray = [SKTexture(imageNamed: "RocketExplode0"),SKTexture(imageNamed: "RocketExplode1"),SKTexture(imageNamed: "RocketExplode2"),SKTexture(imageNamed: "RocketExplode3"),SKTexture(imageNamed: "RocketExplode4"),SKTexture(imageNamed: "RocketExplode5"),SKTexture(imageNamed: "RocketExplode6")]
let RocketExplodeAnimation = SKAction.animateWithTextures(RocketExplodeTexturesArray, timePerFrame: 0.1)
let RocketExp = SKAction.repeatAction(RocketExplodeAnimation, count: 1)
print(contact.bodyA.node)
print(contact.bodyB.node)
if let node = contact.bodyA.node as? SKSpriteNode {
print(node)
//node.paused = true
if node.parent != nil {
let moveUp = SKAction.moveToY(0, duration: 1)
let fadeOut = RocketExp
let remove = SKAction.removeFromParent()
let moveAndFade = SKAction.group([moveUp, fadeOut])
let sequence = SKAction.sequence([moveUp,fadeOut])
RocketNode?.runAction(sequence) {
/// remove theSprite from it's parent
/// Might need to weakly reference self here
RocketNode!.removeFromParent()
ProjectileNode!.removeFromParent()
print("Deleted")
}
//node.removeFromParent()
}
}
if let node = contact.bodyB.node as? SKSpriteNode {
print(node)
//node.paused = true
if node.parent != nil {
let moveUp = SKAction.moveToY(0, duration: 1)
let fadeOut = RocketExp
let remove = SKAction.removeFromParent()
let moveAndFade = SKAction.group([moveUp, fadeOut])
let sequence = SKAction.sequence([moveUp,fadeOut])
RocketNode?.runAction(sequence) {
/// remove theSprite from it's parent
/// Might need to weakly reference self here
RocketNode!.removeFromParent()
ProjectileNode!.removeFromParent()
print("Deleted")
}
}
}
}
我做了这样一个游戏,你必须寻的导弹之类的东西。不过,我真的不明白这个问题是什么?尽量专注于具体的任务。例如,你可以用动作序列完成你移除火箭和炮弹的部分。具有生命值的部分可以通过这种方式完成,以至于火箭有一种叫做applyDamage(损伤)的方法...... – Whirlwind