2017-03-23 11 views
-1

これを実行して、spriteNodeのアルファ値を変更します。以下は私のコードです。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); 
     } 

これはドキュメントに記載されているとおり、node.alpha = valueを使用して、なぜ動作しないのかわかりません。助けてください。

+0

シーンにないインスタンスノードを変更しています! –

+0

これは 'didBegin(contact:)'のスプライトキットの衝突検出ですか? firstBodyがプレーヤーで、secondBodyが "Alpha1"であるかどうかはどのように分かりますか?彼らは逆転するかもしれない。また、あなたがフェードしようとしているこの新しいスプライト 'item'は何ですか?画面には表示されないので、表示されません。 –

答えて

1

アクションを使用してアルファをフェードインすることができます。以下の例を残しました。

 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() 


} 

}

タッチがSpriteNodeはあなたが挿入アルファ値にフェードアウトします始まり、それはこのアクションは、にSpriteNodeのアルファをフェードイン、あなたはまた、期間中に挿入した時間の間に徐々にフェードアウトします0.1秒をかけて徐々に増加する。

+0

これはありがとうございますpjunior – Marin

関連する問題