首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift中以编程方式创建SKTileMapNode

在Swift中以编程方式创建SKTileMapNode
EN

Stack Overflow用户
提问于 2016-09-16 22:14:11
回答 2查看 3.7K关注 0票数 8

有人知道如何使用Swift以编程方式创建SKTileMapNode吗?(注意:我不想使用编辑器来实现这一点,我只想通过编程来实现这一点)

我尝试了以下操作,但未渲染我的切片地图

代码语言:javascript
复制
let bgTexture = SKTexture(imageNamed: "background")
let bgDefinition = SKTileDefinition(texture: bgTexture, size: bgTexture.size())
let bgGroup = SKTileGroup(tileDefinition: bgDefinition)
let tileSet = SKTileSet(tileGroups: [bgGroup])
let bgNode = SKTileMapNode(tileSet: tileSet, columns: 5, rows: 5, tileSize: bgTexture.size())
bgNode.position = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 2)
bgNode.setScale(1)
self.addChild(bgNode)

非常感谢您的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-17 15:29:49

要使用单个背景块布局整个地图,需要遍历每一列和每一行。您需要首先检索背景磁贴。

代码语言:javascript
复制
let tile = bgNode.tileSet.tileGroups.first(
    where: {$0.name == "background"})

for column in 0..4 {
    for row in 0..4 {
        bgNode.setTileGroup(tile, forColumn: column, row: row)
    }
}

也有一个方便的功能,以实现洪水填充;

代码语言:javascript
复制
bgNode.fill(with: tile)

还有一个接受SKTileGroupSKTilemapNode初始化器

代码语言:javascript
复制
let bgNode = SKTileMapNode(tileSet: tileSet, columns: 5, rows: 5, tileSize: bgTexture.size(), fillWithTileGroup: tile)

我强烈建议利用Xcode中内置的功能来创建TileSets和TileMaps。您仍然可以通过编程方式填充地图。

票数 7
EN

Stack Overflow用户

发布于 2018-03-21 12:34:54

如果它对任何人都有帮助,这里是整个事情的总和:

代码语言:javascript
复制
class MyGameScene: SKScene {
    override func didMove(to view: SKView) {
        guard let tileSet = SKTileSet(named: "testset") else {
            // hint: don't use the filename for named, use the tileset inside
            fatalError()
        }

        let tileSize = tileSet.defaultTileSize // from image size
        let tileMap = SKTileMapNode(tileSet: tileSet, columns: 5, rows: 5, tileSize: tileSize)
        let tileGroup = tileSet.tileGroups.first
        tileMap.fill(with: tileGroup) // fill or set by column/row
        //tileMap.setTileGroup(tileGroup, forColumn: 5, row: 5)
        self.addChild(tileMap)
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39533705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档