如何在Swift中为SKSpriteNode创建Flip效果

3
我想用SKSpriteNode在Swift中创建一个翻转效果,就像这个效果。我尝试了这个解决方案,但在水平旋转之前我们可以看到垂直旋转。我只想要一个水平旋转,就像HTML/CSS示例中的那样。

翻转后应该是同一张精灵吗?您可以使用xScale动作将其-1来翻转图像。 - iamandrewluca
在这里,您可以找到如何执行翻转的方法:http://www.raywenderlich.com/76718/card-game-mechanics-sprite-kit-swift - iamandrewluca
不,我想在翻转过程中更改我的精灵,就像Ray Wenderlich的翻转教程一样。我今天下午尝试了一下,并会给你反馈。 - gabrielpf
谢谢,工作做得很好。我会在回答下一个人的时候分享我的方法。 - gabrielpf
2个回答

3

使用SKSpriteNode进行翻转的解决方案:

    func flipTile(node : RectSprite){

        let flip = SKAction.scaleXTo(-1, duration: 0.4)

        node.setScale(1.0)

        var changeColor = SKAction.runBlock( { node.texture = SKTexture(imageNamed: "blue")})
        var action = SKAction.sequence([flip, changeColor] )

        node.runAction(action)

}

0
上面的代码帮助我在Swift 3中创建了下面的函数。请注意,虽然有一些小的语法差异,但仍然非常相似。
可能还可以将操作再次设置为let变量,并在[ ]中运行它们,但对我来说这已经足够简洁了。
func flipCard (node: SKNode, label: SKLabelNode)
        {
            label.isHidden = true

            node.run(SKAction.sequence(
                [SKAction.scaleX(to: 0, duration: 0.2),
                 SKAction.scale(to: 1, duration: 0.0),
                 SKAction.setTexture(SKTexture(imageNamed: "Redcard-blank")),
                 SKAction.fadeOut(withDuration: 2),
                 SKAction.fadeIn(withDuration: 2),
                 SKAction.fadeOut(withDuration: 2),
                 ]
            ))
            label.isHidden = false
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接