gpt4 book ai didi

ios - 如何在SKSpriteNode中 "center"SKTexture

转载 作者:行者123 更新时间:2023-11-30 14:08:31 24 4
gpt4 key购买 nike

我正在尝试在 SpriteKit 中制作拼图游戏。为了让事情变得更容易,我使用 9x9 方形瓷砖板。每个图 block 上都有一个 childNode,其中包含来自该区域的图像。

但这就是我的问题的开始。拼图游戏并不是完美的正方形,当我应用 SKTexture 到节点时,它只是从 anchorPoint = {0,0} 放置。结果并不美好,实际上很糟糕。 https://www.dropbox.com/s/2di30hk5evdd5fr/IMG_0086.jpg?dl=0

我设法用右侧和顶部的“钩子(Hook)”修复了这些瓷砖,但左侧和底部不关心任何东西。

    var sprite = SKSpriteNode()
let originSize = frame.size
let textureSize = texture.size()
sprite.size = originSize
sprite.texture = texture
sprite.size = texture.size()
let x = (textureSize.width - originSize.width)
let widthRate = x / textureSize.width
let y = (textureSize.height - originSize.height)
let heightRate = y / textureSize.height
sprite.anchorPoint = CGPoint(x: 0.5 - (widthRate * 0.5), y: 0.5 - (heightRate * 0.5))
sprite.position = CGPoint(x: frame.width * 0.5, y: frame.height * 0.5)
addChild(sprite)

你能给我一些建议吗?

最佳答案

如果不了解更多关于您正在使用的部件纹理的信息,我看不出有什么方法可以正确放置,因为它们都是不同的。就像这件作品的任何一侧都有一个旋钮一样,旋钮的宽度/高度也会添加到纹理中。很难在图片中看出,但即使它没有旋钮而是有一个插图,它也可能会增加不同的尺寸。

在不了解纹理如何创建的情况下,我无法提供相关帮助。但我确实相信问题就是由此开始的。如果是我,我会创建一个带有额外 alpha 的方形纹理,以正确居中该部分。因此该纹理的中心将始终放置在网格上正方形的中心。

尽管如此,我确实知道将该纹理添加到节点,然后将该节点添加到 SKNode 将使您的放置按照您当前的方式更加平滑。然后,诀窍就是将该纹理 block 正确放置在空的 SKNode 中。

例如...

    let piece = SKSpriteNode()
let texturedPiece = SKSpriteNode(texture: texture)

//positioning
//offset x needs to be calculated with additional info about the texture
//for example it has just a nob on the right
let offsetX : CGFloat = -nobWidth/2

//offset y needs to be calculated with additional info about the texture
//for example it has a nob on the top and bottom
let offsetY : CGFloat = 0.0

texturedPiece.position = CGPointMake(offsetX, offsetY)
piece.addChild(texturedPiece)

let squareWidth = size.width/2

//Now that the textured piece is placed correctly within a parent
//placing the parent is super easy and consistent without messing
//with anchor points. This will also make rotations nice.
piece.position = CGPoint(x: squareWidth/2, y: squareWidth/2)
addChild(piece)

希望这是有道理的,并且不会让事情变得更加困惑。

关于ios - 如何在SKSpriteNode中 "center"SKTexture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com