Unity2D隐藏了由edgecollider定义的外形

时间:2017-11-17 12:33:27

标签: c# unity3d

我有一个由edgeCollider定义的2D多边形。有没有办法隐藏形状之外的所有内容,只显示内部的内容?

我尝试使用天空盒和灯。我想创建一个面具(但我不知道如何创建这样的面具)。

有没有办法只显示边缘对撞机定义的形状内部?

1 个答案:

答案 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版本,然后从下拉列表中选择内置着色器。

编辑"聚焦!",尝试使用您的自定义形状

http://www.shaderslab.com/demo-49---spotlight.html