欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

UnityShader使用Plane实现翻书效果

程序员文章站 2022-07-02 22:30:19
本文实例为大家分享了unityshader使用plane实现翻书效果的具体代码,供大家参考,具体内容如下之前在网上看到一个shadr可以实现旋转效果,就拿来实现一个翻书效果。解决办法是用不同模型的显示...

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

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

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

1.plane的扭曲

2.plane的旋转

3.正反面的采样

plane的扭曲:

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

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

UnityShader使用Plane实现翻书效果

plane的旋转:

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

UnityShader使用Plane实现翻书效果

plane的贴图采样:

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

下面是shader

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

UnityShader使用Plane实现翻书效果

下面我们实现翻书效果

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

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

UnityShader使用Plane实现翻书效果

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

创建材质球pageturning2

UnityShader使用Plane实现翻书效果

然后再复制一个改名pageturning3

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

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

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

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

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

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

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

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