しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

SKShapeNodeのfillTextureに画像をセットしたのに表示されない時の対処法

表題の件で少しハマったのでメモ。

画像を表示する方法

まずはプロジェクトに画像を追加します。

f:id:llcc:20171214145632p:plain

画像を追加したら、下のようにSKShapeNodeのfillTextureに画像をセットします。

import SpriteKit

class GameScene: SKScene {
    override func didMove(to view: SKView) {
        let node = SKShapeNode(circleOfRadius: 100)
        node.fillTexture = SKTexture(image: #imageLiteral(resourceName: "ball"))
        addChild(node)
    }
}

実行結果は下の通りです。
SKShapeNodeの枠線はあるけど画像は表示されません。

f:id:llcc:20171214145840p:plain

画像を表示するためには、下のようにfillColorをセットする必要があります。

class GameScene: SKScene {
    override func didMove(to view: SKView) {
        let node = SKShapeNode(circleOfRadius: 100)
        node.fillTexture = SKTexture(image: #imageLiteral(resourceName: "ball"))
        node.fillColor = UIColor.white // 今回追加
        addChild(node)
    }
}

f:id:llcc:20171214145955p:plain

公式ドキュメントによると、fillTextureはfillColorとブレンドして表示されます。
画像が表示されなかったのは、fillColorが透明だった為だと思います。

fillTexture - SKShapeNode | Apple Developer Documentation

fillColorを白以外の色にすると少し黒っぽい画像が表示されます。

node.fillColor = UIColor.lightGray

f:id:llcc:20171214150249p:plain