UnityShader使用Plane实现翻书效果
本文实例为大家分享了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加载到集合中然后从集合中修改他们的材质球
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Unity排行榜优化滚动效果