我有一个想要部分遮罩的图像(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图像将完全消失,而不是被部分裁剪。有什么想法吗?
发布于 2014-12-13 04:52:29
问题是你的黑色正方形图像是完全不透明的。它的一些(或全部)像素应该是透明的(即alpha = 0)。与遮罩节点的透明像素相对应的像素将在裁剪的节点中被遮罩(即,不渲染)。为了演示这一点,我使用您的代码创建了以下代码。
原图如下:

这是我在maskNode中使用的蒙版图像。请注意,白色区域是透明的(即alpha = 0)。从苹果公司的文档来看,
渲染其子对象时,将根据遮罩中的相应像素验证每个像素。如果遮罩中的像素的alpha值小于0.05,则图像像素将被遮罩。任何未由遮罩节点渲染的像素都会自动遮罩。

这是被裁剪的节点。我从iPhone 6模拟器上截取了这个场景的屏幕截图。

https://stackoverflow.com/questions/27429134
复制相似问题