我有一个2维迷宫,我画在画布上。显示迷宫上的红点,以向用户显示他们在迷宫中的位置。目前整个迷宫是可见的,这引起了问题。
我想这样做:
我一直在研究使用OpacityMask属性,这可能很容易实现用户当前位置的可见部分,但是我如何实现让访问区域“灰色”?
答案 0 :(得分:4)
你的问题太笼统了,但我会尽力让你朝着正确的方向前进。
因此,首先每个单元格应该是一个对象。它需要一些属性,如;
int x // x coordinate
int y // y coordinate
bool isVisible // marks if the cell is currently in full view
bool beenSeen // marks if the user has been here
每次用户移动时,您都应该调用RefreshMap(Cell Current);
在此方法中,您应找到所有边界单元格(使用x和y值)并将其标记为可见。您还应将当前单元格标记为beenSeen
。刷新图应该可能会更改数据,然后其他一些方法应该使用当前数据重新渲染地图。
这是一个非常粗略的想法,你如何实现这种类型的东西。不要太认真。它应该足够你当前的项目,我敢肯定在真正的游戏中使用的东西要复杂得多。
答案 1 :(得分:2)
您将在整个迷宫的顶部使用两个OpacityMask
图层。
第一个描述“你在哪里”,它定义了你目前可以清楚看到的东西,其他一切都是50%不透明或“灰色”。
第二个描述你去过的地方,透明你去过哪里,其他一切都是黑色的。透明的“你去过的地方”区域将允许用户透视到“你在哪里”的图层,以显示你所在的灰色/透明区域,如果你不是。
每一层都有一些复杂性。