大家好,我已经尝试解决这个问题好几周了,但是都没有成功。我尝试了很多不同的方法,但是都没有效果。我正在尝试在2D游戏中实现LOS(Line of Sight),使用y-depth创建虚假高度。我的墙壁是3个方块高,应该阻止玩家看到它们覆盖的区域。我尝试使用Raycasting和创建网格,但效果不好,因为我使用的碰撞器也会被Raycast击中,导致应该可见的墙壁在任何角度都变黑。我还尝试使用Shader,但那完全是一个灾难。我的最新解决方案是尝试使用Light和ShadowCaster2D,但强度设置为1。这确实起作用了,但墙壁却不会变黑。难点在于墙壁是基于Tilemap构建的,所以ShadowCasting Self会使所有墙壁都变黑,ShadowCaster2D的形状在底部也会使墙壁始终变黑。排除墙壁层的ShadowCasting会导致书架被阴影吃掉一半,书架和墙壁都应该变黑。此外,站在ShadowCaster形状上的任何东西都会变黑,会显得很奇怪。只ShadowCasting Floor层也会导致其他东西都能被看到。这很重要,因为我希望那些玩家看不到的东西会被隐藏,因为我想让对象在玩家看不到时移动。我真的没有更多的想法,所以我在这里求助于更有知识的人。感谢你们,如果有人能找到解决这个灾难的方法,我会非常感谢!