【发布时间】:2016-08-08 19:44:17
【问题描述】:
我正在制作一个 2d 横向卷轴。
有从右边产生的火箭。
当我向一个人投掷弹丸时,我希望它:
- 表现得像被击中一样,也许在它的矢量路径上稍微向后移动,闪烁红色,诸如此类
- 弹丸应该像箭头一样粘在火箭上(不幸的是,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(damage) 等的方法......
标签: swift sprite-kit