【问题标题】:SKTiled: specific tile positionSKTiled:特定的瓷砖位置
【发布时间】:2017-02-12 16:00:57
【问题描述】:

我正在使用SKTiled

SKTileLayer.tileAt(0,0) 函数返回位于CGPoint 的图块。 SKTileLayer.pointForCoordinate(coord: CGPoint) 也是如此。

我想要的只是在网格 (0,0) 上获得一个平铺,而不是在CGPoints 上获得平铺。那将是地图中的第一个网格。我怎样才能以这种方式获得瓷砖?

编辑:tileAt(0,0) 返回第一个 Grid 但如果我想将 Player 位置更改为 tileAt(0,0) 它不是真正的位置。

【问题讨论】:

    标签: swift sprite-kit tiled


    【解决方案1】:

    这是一个很棒的框架,您可以使用返回图层中给定点的瓦片坐标的方法:

    SKTileLayer.coordinateForPoint(<#T##TiledLayerObject#>)
    

    更多细节可以参考框架官方文档here

    你也可以获取自动补全后的磁贴为:

    如您所见,它返回SKTile

    【讨论】:

    • 好吧,这行得通,但为什么我必须将Child(player) 添加到图层才能工作??
    • 不,没必要,注意zPosition。为此,请始终使用docs,您可以找到一个有用的变量,名为lastZposition
    • 如果我不执行 'SKTileLayer.addChild(Player)' 我得到的玩家节点位置不正确。无论如何,你知道如何加快瓷砖地图的创建速度吗?小地图上的 1.6 秒..
    • 不要忘记从SKNode 派生的层所以,要获得你的位置,你应该做这样的事情:nodeWhereIsYourLayer.convert(yourCGPoint, to: nodeDestinationWhereIsYourPlayer)
    • 瓦片地图速度受许多因素影响:如果您在 TMX 地图中有很多层,例如 3200x3200,则要渲染的瓦片/对象很多,例如我有一张大地图需要2.290秒
    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多