我想在spriteKit中显示一堆可拖动的图像。一些图像需要我动态地在图形中切出一个洞,这样我才能看到图像背后的内容。当我拖动图像时,我将能够通过我在图像中剪切的孔看到其他图像。
如果您需要视觉效果,请考虑拼图拼图。
下面的这个堆栈交换链接看起来非常简单和有希望,但白色圆形切口似乎没有显示。至少不在模拟器中。我必须看看我是否通过testflight在我的iphone上获得了更好的结果。
答案 0 :(得分:1)
这称为反掩蔽。此时,在SpriteKit中似乎没有一种简单的方法可以做到这一点。
你必须假装它。最简单的方法是复制背景,并对其进行正面掩饰。
这看起来像一个洞,但不是一个洞。
将这个积极掩盖的复制放置在洞的位置,在"奶酪上面#34;那是"洞"在里面。
以下是我之前尝试了解如何在SpriteKit中执行此操作的方法:How to cut random holes in SKSpriteNodes
答案 1 :(得分:1)
使用此
https://developer.apple.com/reference/spritekit/skcropnode
和
https://www.hackingwithswift.com/read/14/2/getting-up-and-running-skcropnode
“彩色部分中的任何内容都将可见,透明部分中的任何内容都将不可见。”
我的第一次成功。显然,我需要继续进行定位。
var taMain = SKTexture(imageNamed: "landscape144.jpg")
var sprite1 = SKSpriteNode()
sprite1 = SKSpriteNode(texture: taMain)
sprite1.xScale = 2
sprite1.yScale = 2
sprite1.zPosition = 1
var cropNode:SKCropNode = SKCropNode()
cropNode.xScale = 1
cropNode.yScale = 1
cropNode.position = CGPoint(x: 0, y: 0)
cropNode.zPosition = 2
cropNode.maskNode = SKSpriteNode(imageNamed: "maskimage3.png")
cropNode.maskNode?.position = CGPoint(x: 0, y: 0)
cropNode.addChild(sprite1)
self.addChild(cropNode)
和touchesbegan期间
for touch: AnyObject in touches {
//uncomment 2 lines to help you get your image positioned on screen.
// it moves the whole cut image + hole
//let location = touch.locationInNode(self)
// cropNode.position = location
//Or uncomment these 2 lines to move just the mask
//let location = touch.locationInNode(cropNode)
// cropNode.maskNode?.position = location //moves just the hole
}
在触摸开始期间,如果要将图像和孔一起移动并在屏幕上找到合适的位置,则可以取消注释“cropNode.position = location”行。或者,如果要移动孔,可以取消注释“cropNode.maskNode?.position = location”。
只有当您的蒙版图像足以覆盖您正在切割的整个图像时,移动孔才有效。否则你最终会失去比预期更多的图像。所以,为了我的目的,我可能最终会制作一个完全相同的高度/宽度的图像和掩模图像。然后,根据我的需要,我将加载不同的掩模图像。
我的图片:
具有透明孔144×144像素的掩模
横向144 x 144像素
iphone 6模拟器中的结果 - xcode 6.2
带透明孔的大面罩