您的问题的前半部分非常简单。您只需要在该功能中设置播放器的新纹理,然后在完成动画后将其还原为原始播放器动画。因此,我建议在类级别上创建这两个动画,并将键分配给默认动画,并使用攻击动作的完成处理程序将其设置回去。
class GameScene: SKScene { let frame2 = SKTexture(imageNamed: "Ttam2") let frame3 = SKTexture(imageNamed: "Ttam3") let frame4 = SKTexture(imageNamed: "Ttam4") let attackframe1 = SKTexture(imageNamed: "Ttam1_ATTACK") let attackframe2 = SKTexture(imageNamed: "Ttam2_ATTACK") var animation: SKAction! var attackAnination: SKAction! override func sceneDidLoad(){ animation = SKAction.repeatForever(SKAction.animate(with: [playerTexture, frame2, frame3, frame4], timePerframe: 0.2)) attackAnimation = SKAction.animate(with: [attackframe1,attackframe2],timePerframe: 0.2) playerNode.run(animation,withKey:"animate") } func handleAttackButtonClick(){ playerNode.removeAction(forKey:"animate") playerNode.run(attackAnimation,completion:{ self.playerNode.run(animation,withKey: "animate") }) }}
至于关于碰撞的后半部分,您想要使用
contactTestBitmask。您可以将SKPhysicsContactDelegate添加到场景类,并设置要在其上注册联系人的节点的位掩码。整个SO中都有许多关于此方面的问题和答案。我认为无需再次回答。如果您挂了一个新问题,请随时回来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)