制作蒙面图像的SKCropNode完全消失

时间:2014-12-11 17:44:40

标签: ios sprite-kit

我有一个我想要部分掩盖的图像(wallSprite),一个用作遮罩的图像(wallMaskBox),以及一个用于保存两者的图像(wallCropNode)。当我只是将两个图像作为wallCropNode的子项添加时,两个图像都正确显示:

var wallSprite = SKSpriteNode(imageNamed: "wall.png")

var wallCropNode = SKCropNode()

var wallMaskBox = SKSpriteNode(imageNamed: "blacksquaretiny.png")
wallMaskBox.zPosition = 100

wallCropNode.addChild(wallSprite)
wallCropNode.addChild(wallMaskBox)
gameplayContainerNode.addChild(wallCropNode)

但是当我将遮罩图像设置为裁剪节点的maskNode属性时:

var wallSprite = SKSpriteNode(imageNamed: "wall.png")

var wallCropNode = SKCropNode()

var wallMaskBox = SKSpriteNode(imageNamed: "blacksquaretiny.png")
wallMaskBox.zPosition = 100

wallCropNode.addChild(wallSprite)
wallCropNode.maskNode = wallMaskBox
gameplayContainerNode.addChild(wallCropNode)

wallSprite图像完全消失,而不是部分裁剪。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

问题是你的黑色方形图像是完全不透明的。其一些(或全部)像素应该是透明的(即,α= 0)。对应于掩模节点的透明像素的像素将在裁剪的节点中被遮蔽(即,不渲染)。为了证明这一点,我使用您的代码创建了以下内容。

这是原始图片:

enter image description here

这是我用于maskNode的蒙版图像。注意,白色区域是透明的(即,α= 0)。来自Apple的文档,

  

渲染子像素时,每个像素都会被验证   掩码中的相应像素。如果掩码中的像素具有alpha   当值小于0.05时,图像像素被掩盖掉。任何像素都没有   由掩码节点呈现的内容会自动被屏蔽掉。

enter image description here

这是裁剪的节点。我从iPhone 6模拟器中截取了场景的截图。

enter image description here