2016-12-06 48 views
2

我想在spriteKit中顯示一堆可拖動的圖像。一些圖像會要求我動態地在圖形中切出一個洞,以便我可以看到圖像背後的內容。當我拖動圖像時,我可以通過圖像中切出的孔看到其他圖像。如何在spriteKit中使用spriteKit在精靈圖像或紋理中切出一個洞以顯示它背後的內容

如果您需要視覺效果,請考慮拼圖碎片。

下面這個堆棧​​交換鏈接看起來非常簡單而有希望,但白色的圓形切口似乎並不顯示。至少不在模擬器中。我將不得不通過testflight查看我的iPhone上是否有更好的結果。

Draw a hole in a rectangle with SpriteKit?

+0

您需要使用SKCropNode,如果你在閱讀的評論你發佈的那個,你可以看到作者那麼 – Knight0fDragon

+0

好的。我會嘗試基於這個ref的skcropnode:https://developer.apple.com/reference/spritekit/skcropnode – Neo42

+0

是的,你所做的事實際上是該引用的反轉,這是.Subtract進來的地方。不記得100%,因爲我已經這樣做了一段時間,但我不認爲.Subtract混合了alpha通道,所以你可能必須做一個自定義的綠色 – Knight0fDragon

回答

0

在有色使用該

https://developer.apple.com/reference/spritekit/skcropnode

https://www.hackingwithswift.com/read/14/2/getting-up-and-running-skcropnode

「什麼部分將是可見的,透明部分中的任何內容都將被隱藏IBLE「。

我有我的第一個成功。顯然,我需要接下來的工作。

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 
} 

在你的touchesBegan可以取消對該行「cropNode.position =位置」,如果你想將圖像和孔一起移動,並想出一個好位置時它在屏幕上。或者如果你想移動洞,你可以取消註釋「cropNode.maskNode?.position = location」。

只有當您的maskimage足以覆蓋您切割的整個圖像時,移動該孔纔有效。否則,最終會丟失比預期更多的圖像。所以,爲了我的目的,我最終可能會製作出高度/寬度完全相同的圖像和maskimages。然後,根據我需要我會加載不同的maskimages。

我的圖片:


144個像素

面膜與透明孔144

Mask with transparent hole 144 by 144 pixels


景觀144由144像素

Landscape 144 by 144 pixels


結果iphone 6模擬器 - 的Xcode 6.2

Results in iphone 6 simulator - xcode 6.2


與透明窟窿較大的面膜

Larger Mask with transparent hole

+1

你可以顯示'maskimage.png'的樣子嗎?最終結果如何? – Confused

+0

完成。我澄清了我的代碼,上傳了我的源圖像,解釋了我對此的理解等等。 – Neo42

1

這被稱爲逆掩蔽。在這一點上,似乎並沒有一種簡單的方法在SpriteKit中執行此操作。

你將不得不僞造它。最簡單的方法是複製背景,並積極地掩蓋它。

這看起來像一個洞,但不是一個洞。

將這個正面遮罩的複製放置在孔的位置,位於「奶酪」的上方,該「奶酪」上面有「孔」。

這裏是我以前試圖找出如何做到這一點的SpriteKit:How to cut random holes in SKSpriteNodes

+0

我想投票,因爲我沒有認爲你所說的完全是真的。而且我已經在另一個來源取得了一些成功。 – Neo42

+0

你是否願意抗衡這種說法:「在這一點上,在SpriteKit中似乎沒有這麼簡單的方法。」因爲我很樂意聽到它,如果你可以! – Confused

相關問題