1
私は2dサイドスクロールを作っています。SKNodeは削除する前にアニメーションを実行します
右からスポーンを起こすロケットがあります。
私は1つの発射をチャックするとき、私はそれをしたい:おそらく、そのベクトルパスにわずかに後方に移動、ヒットされているよう
- 行為、フラッシュ赤、事
- のその種発射
- 敵のHPが0の場合、死のアニメーションを実行します。
- 死のアニメーションの後に、削除します。ロケットと発射体
以下は、私が作業をしようとしてきたコードです。私はどのノードがどのノードであるのか、どのように2つの異なるノードをターゲットにするのか混乱しています... bodyAとbodyBは同じことを実行することもかなり非効率です...
これはすべてdidBeginContact
の機能の中にあります...私はいくつかのコメント付きコードwarts n allを残しました。
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