更改 SKTileMapNode 中特定图块的颜色
Posted
技术标签:
【中文标题】更改 SKTileMapNode 中特定图块的颜色【英文标题】:Change color of specific tiles in SKTileMapNode 【发布时间】:2019-03-21 18:56:13 【问题描述】:我正在创建一个基于圆形的游戏,其中我有一个操场作为 SKTileMapNode,每个图块上都有草纹理,角色可以从一个图块走到另一个图块。每个角色都有自己的范围,他们可以在一轮中行走。我想显示这个范围,以便玩家可以看到所选角色的范围。我的问题:如何更改特定字符所在的瓷砖范围内的瓷砖的颜色?带有纹理的 SKSpriteNode 可以简单地通过 .color
和 .colorBlendFactor
改变它们的颜色,这样我的绿草纹理就会变成红色。如何使用 SKTileMapNode 中的特定图块执行此操作?
【问题讨论】:
【参考方案1】:let tile = tileMap.tileDefinition(atColumn: column, row: row)
一旦你有了瓷砖,你就可以修改瓷砖 tile.textures
的纹理以包含有色纹理或自己绘制彩色纹理(虽然很乱,但这里有一个 example)。
我会推荐一种不同的方法,尽管获取您想要着色的图块的中心 tileMap.centerOfTile(atColumn: column, row: row)
并使用它和它们的大小 tileMap.tileSize
在您想要的图块上方创建节点 SKSpriteNode
彩色的。
【讨论】:
那么,您将如何选择特定的图块? 你应该再读一遍我的问题。正如@ElTomato 已经问过的,任务是更改特定图块的颜色,而不是整个图块地图节点 抱歉,我没有完全阅读问题,希望我的编辑有所帮助。 我也有这两个想法,但是正如您已经提到的那样,将每个纹理都放在彩色版本中并不是一个好的解决方案。此外,我想避免为特定图块创建 SKSpriteNode,因为 SKTileMapNode 本身就像一个节点中的 SKSpriteNode 数组,但据我所知,没有与地图中单个图块的 SKSpriteNode 中相同的支持功能/属性。感谢您的贡献以上是关于更改 SKTileMapNode 中特定图块的颜色的主要内容,如果未能解决你的问题,请参考以下文章