更改 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 中特定图块的颜色的主要内容,如果未能解决你的问题,请参考以下文章

将 SKSpriteNode 移动到 SKTileMapNode 上的特定图块

颤动如何从 ListTile 更改所选图块的背景颜色

SKTileMapNode 的颜色设置问题

xmonad - 打开一个特定图块的窗口

从 SKTileMapNode 中删除特定的瓦片

AS3 从图块表中批量裁切图块的最佳方法?