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