UnityShader使用Plane实现翻书效果

2022-07-22,,,

本文实例为大家分享了unityshader使用plane实现翻书效果的具体代码,供大家参考,具体内容如下

之前在网上看到一个shadr可以实现旋转效果,就拿来实现一个翻书效果。解决办法是用不同模型的显示与隐藏,像序列帧一样,为了实现效果感觉实现起来很繁琐且占用资源,后期优化可考虑用对象池解决。今天就试着用vertex shader来实现一下,互相交流学习,大神勿喷。

实现简单的翻书效果大概需要三步:

1.plane的扭曲

2.plane的旋转

3.正反面的采样

plane的扭曲:

翻书的效果大概是,中间向外突出,x轴方向的正方向会向后偏移。

x轴负方向边沿是保持不动的,且扭曲程度跟随旋转角度增加又减小,90度为最大值。

plane的旋转:

根据plane的顶点x的范围(-5,5)

plane的贴图采样:

用了两个pass通道来实现,一个是后面剔除,一个是前面剔除。分别对两个图片采样。

下面是shader

动态修改这个值就可以达到plan的翻转

下面我们实现翻书效果

我们接下来要用dotween,不明白dotween可百度下来了解使用这里就不详解;

创建resources文件夹 在内创建子文件夹fronttextur(正面)和versotextur(反面)用来存放一本书的正反面图片 把自己准备的图片导入 为了方面动态加载我都用数字代替第几页

接下来我们创建一个plan位置归零

创建材质球pageturning2

然后再复制一个改名pageturning3

把刚才创建的plan添加材质球pageturning3

然后将plan作为预设拖入resources。

删除plan,然后重新创建一个plan添加材质球pageturning2。

接下来用下面代码实现翻书

把这个代码挂载到刚创建的plan上

创建一个 ui的button绑定脚本pageturning上的 turning方法。这样就实现了翻书的效果。

现在只做了往后翻书效果,如果想做往前翻的效果可把每次创建的plan加载到集合中然后从集合中修改他们的材质球

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

《UnityShader使用Plane实现翻书效果.doc》

下载本文的Word格式文档,以方便收藏与打印。