gpt4 book ai didi

ios - Xcode-Swift SpriteKit : SKTileMapNode with a "physics gap"

转载 作者:行者123 更新时间:2023-11-30 12:43:11 29 4
gpt4 key购买 nike

我正在使用 SpriteKit 和 TileMapNode,但遇到了一个烦人的问题。

它应该是这样的。 enter image description here

这就是它在模拟器/设备中的实际外观。

enter image description here

空白很糟糕,我不知道如何摆脱它们。我的图 block 在资源的“Sprite Atlas - Part”中大约为 70x70,我已将tilemapnode 配置为比例为 0.5,图 block 大小为 70x70。

在测试某些情况时,我发现这部分代码会触发错误,但我不知道可能出了什么问题。将 SKPhysicsBody 大小更改为较小的大小并没有帮助。

guard let tilemap = childNode(withName: "LevelGround") as? SKTileMapNode else { return }            
let tileSize = tilemap.tileSize
let halfWidth = CGFloat(tilemap.numberOfColumns) / 2.0 * tileSize.width
let halfHeight = CGFloat(tilemap.numberOfRows) / 2.0 * tileSize.height
for row in 0..<tilemap.numberOfRows {
for col in 0..<tilemap.numberOfColumns {
if tilemap.tileDefinition(atColumn: col, row: row) != nil {
let x = CGFloat(col) * tileSize.width - halfWidth
let y = CGFloat(row) * tileSize.height - halfHeight
let rect = CGRect(x: 0, y: 0, width: tileSize.width, height: tileSize.height)
let tileNode = SKShapeNode(rect: rect)
tileNode.position = CGPoint(x: x, y: y)
tileNode.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 70, height: 70), center: CGPoint(x: tileSize.width / 2.0, y: tileSize.height / 2.0))
tileNode.physicsBody?.isDynamic = false
tileNode.physicsBody?.collisionBitMask = 2
tileNode.physicsBody?.categoryBitMask = 1
tileNode.physicsBody?.contactTestBitMask = 2 | 1
tileNode.name = "Ground"
tilemap.addChild(tileNode)
}
}
}

最佳答案

tileNode.strokeColor = .clear

解决了问题

更新:问题没有解决...刚刚搬家:/

检查时,如果地面和玩家接触,每个新方 block 的状态都会在“接触”和“无接触”之间切换。当使用立方体而不是圆形时,立方体开始旋转。看起来,立方体的角卡在了瓷砖之间的最小空间处。

关于ios - Xcode-Swift SpriteKit : SKTileMapNode with a "physics gap",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41996383/

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