Unity TileMap Grid 问题,创建一个简单的战争迷雾

问题描述

我在 Tilemap Grid 上有一个程序生成的地牢 BSP。添加一个 TileMap 碰撞器。 我打算简单地做,因为我的 TileMap 包含一个 SpriteRenderer,我将颜色 0,0 添加到它,就像战争的黑色迷雾一样,如果我看不清它或已经打开它,我会重新绘制它们使用 0.5,0.5,0.5,玩家周围的区域将变为 1,1,1. 这会很酷,但我只能通过 VectorInt 或通过索引和数组副本从地图中获取图块。我可以通过对撞机以某种方式访问​​每个单元格吗?使用 Raycast 或 Overlap Colliders 之类的东西。 任何碰撞器或碰撞都会告诉我有关 TileMap 地图的信息。还是我仍然需要创建每个图块并将它们附加到游戏对象或可编写脚本的对象?我很困惑,告诉我,我查看了很多关于这个问题的教程和问题,但很困惑

解决方法

我不完全明白,但我很确定您想在运行时添加一个磁贴?或者你至少想要改变瓷砖,让它变成黑色或有战争迷雾?

首先,我找到了这个链接:How can i place a tile in a tilemap by script

然而,这会很困难,因为在不应该有战争迷雾的时候,必须有某种阵列,或者可能是二维阵列,所有的瓷砖。

我的建议是使用 Sprite Mask ,并将瓦片地图(实际地面)设置为不与蒙版交互,并具有大雾的战争精灵,就像可能跟随玩家的大黑云以便它不需要是一个巨大的精灵,并将它的精灵交互设置为可见的外罩。

最后,制作一个跟随玩家周围的精灵面具,从而消除玩家周围的战争迷雾。

另一件事是制作一个中间有一个洞的大云精灵,让它跟着玩家四处走动。这样一来,战争迷雾就很大了,但中间有一个洞,所以迷雾不在玩家周围。