在unity3d中创建清洁效果

gab*_*jan 1 shader unity-game-engine

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

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

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

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

任何想法都会受到影响!

Ser*_*sch 7

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

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

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

使用渲染纹理(需要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