如何改变spriteNode的alpha值?

ahm*_*bal 1 sprite-kit skspritenode skscene swift

我正在改变这样的alpha价值,spriteNode

if (firstBody.node?.name)! == "Player" && secondBody.node?.name == "Alpha 1" {

        var item: SKSpriteNode?
        item = SKSpriteNode(imageNamed: "BG")
        item!.alpha = 0.1

        score += 1
        scoreLabel?.text = String(score)
}
Run Code Online (Sandbox Code Playgroud)

文档(使用node.alpha = value)中提到了这一点,但我不确定为什么它不起作用。

小智 5

你可以使用一个 Action 来淡化 alpha,我在下面留下了一个例子。

class GameScene: SKScene {  
  var player: SKSpriteNode!  

  override func didMove(to view: SKView) {
        player = SKSpriteNode(color: .purple, size: CGSize(width: 100, height: 100))      
        player.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
        self.addChild(player)            
    }

    func fadePlayer() {    
        let fadeAlpha = SKAction.fadeAlpha(to: 0.1, duration: 1.0)
        self.run(fadeAlpha)
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        fadePlayer()
    }

}
Run Code Online (Sandbox Code Playgroud)

当触摸开始时,SpriteNode 将淡出到您插入的 alpha 值,它也会在您插入的持续时间内逐渐淡出,此操作会在 1 秒内将 SpriteNode 的 alpha 逐渐淡出到 0.1。