在unity3d中创建清洁效果

时间:2014-04-29 07:55:17

标签: unity3d shader

我试图构建一些简单的游戏(学习),你必须清理对象。 这意味着,例如,您的显示器上有灰尘,因此您无法看到图像。然后使用鼠标或手指移动环绕监视器以使图像可见。

所以我到目前为止得到的是2张图像首先是显示器图像,第二张图像是它之前的灰尘。我设法意识到用户何时将所有图像都向下扫描。但是,我想做的是当用户仅在该半径中的某个地方点击屏幕时,前方图像消失。

我猜我应该使用图层蒙版,但我不知道该怎么做。

我基本上设法编写了我自己的着色器,只显示具有正确图像的图层,但不知道如何做到这一点,你可以从中获得一些很酷的效果。

任何想法都会受到影响!

2 个答案:

答案 0 :(得分:6)

我会为此使用渲染纹理。它允许您将图像文件用作画笔。而且速度非常快。我们的想法是使用渲染纹理作为蒙版。你从黑色纹理开始。每当玩家触摸屏幕时,您就会将画笔图像渲染到此纹理。但是此功能(渲染纹理)仅在Unity Pro中可用。

如果您不想购买Unity Pro,仍然可以使用纹理作为蒙版。但这肯定比渲染纹理慢。我不知道要慢多少。选项包括:

  1. 创建普通纹理(Texture2D)并使用SetPixelSetPixels在玩家触摸屏幕时更新遮罩。如果你想这样,我建议使用比屏幕尺寸小得多的纹理(4x,8x取决于你想要的质量)。否则它会很慢。
  2. 创建普通纹理(Texture2D)并使用ReadPixels。这与渲染纹理的工作方式非常相似,但速度较慢。解释了这种技术here
  3. 使用渲染纹理(需要Unity Pro)

    确定。我做了一个例子:https://drive.google.com/folderview?id=0B60e_iFEZd1-RlB4LVN6NE84clU&usp=sharing 有:

    • 玩家需要清除灰尘的图像:Image.jpg
    • 我们在它上面绘制的尘埃的图像:Dust.png
    • 我们用作擦除笔刷的图片:Brush.png
    • 我们用作灰尘遮罩的渲染纹理:Mask.renderTexture
    • 我们用来更新遮罩的着色器:MaskConstruction.shader
    • 我们用来渲染灰尘的着色器(它结合了Dust.png和渲染纹理):Masked.shader
    • 将生活变为现实的剧本:MaskCamera.cs
    • 主要场景:Main.unity

答案 1 :(得分:1)

我认为这可能会有所帮助。本规范示例的主要目的是使用Unity创建除尘/除雾效果。使用,纹理遮罩着色器,遮罩构造着色器,渲染纹理,相机遮罩脚本和遮罩相机,您可以创建自己的效果。继续阅读以了解如何下载源代码。它是免费的!

http://studio.openxcell.com/remove-dustfog-object-unity-swipe.html