我有一个由edgeCollider定义的2D多边形。有没有办法隐藏形状之外的所有内容,只显示内部的内容?
我尝试使用天空盒和灯。我想创建一个面具(但我不知道如何创建这样的面具)。
有没有办法只显示边缘对撞机定义的形状内部?
答案 0 :(得分:2)
使用碰撞器触发事件怎么样? 将此多边形设置为检查器中edgeCollider2D组件中的触发器。然后你可以使用对撞机OnEnterTrigger2D。
您的游戏对象全部被禁用,直到此edgeCollider与之发生碰撞。然后禁用游戏对象OnExitTrigger2D。
如果您想将其限制为仅限一定数量的对象。您可以将图层设置为仅隐藏/显示这些对象。
void OnTriggerEnter2D(Collider2D other) {
if(other.gameObject.layer == "hiddenObject"){
other.gameObject.enable = true;
}
}
然后在OnTriggerExit2D上反向。
我不确定你的目标是什么。所以另一个解决方案可能是后处理着色器。
但我只能对此进行高级别的描述。
您将获取最终的屏幕图像纹理和多边形的当前位置,然后将屏幕纹理中的像素添加到多边形纹理并输出此纹理。 (此着色器必须已存在)。
但你想要反过来。
https://docs.unity3d.com/Manual/shader-TransparentCutoutFamily.html
你想要把什么东西留在洞里并摆脱它之外的东西?
您可以下载内置着色器以在此处进行编辑
https://unity3d.com/get-unity/download/archive
只需找到您的Unity版本,然后从下拉列表中选择内置着色器。
编辑"聚焦!",尝试使用您的自定义形状