首页 > 代码库 > unity3d 纹理动画

unity3d 纹理动画

不知道大家有没有玩过赛车游戏

赛车游戏的跑道有路标,如下图

技术分享

玩过赛车游戏的都知道,大多数赛车游戏的路标是会动的,如上图,它会从右往左运动

不会发动态图,大家脑补一下吧

没有玩过赛车游戏的也不要紧,大家见过游戏中的瀑布或者湖面吗?如下图:高山流水

 技术分享

当然,我这个贴图的效果不是很好,不过我这里要说的是原理,不妨碍,我们继续

图中的瀑布从上往下流动

我们都知道,如果用粒子的话,有几百个瀑布,在手机上肯定是非常卡的

差一点的手机说不定游戏刚打开就未响应了

除非要求是非常逼真的那种水才用粒子系统,能不用尽量不用

用纹理动画的话虽然达不到粒子那么逼真,但是也是一种不错的解决方案

纹理动画耗费资源还是粒子动画耗费资源呢?我们一探究竟

小二,上图

好勒客官,马上来

 技术分享

这是瀑布的材质球,我们手动修改OffsetX

按每次+0.1这样修改:0.1,0.2,0.3,0.4....

我们会发现,每修改一次材质球就会相应的变动

现在我们归零,修改一下OffsetY,依旧和修改X一样的方法

我们会发现材质球也会有相应的变动,但是方向不一样

如果只观察材质球感觉不容易看出来,那就把材质球挂到物体上,这样看的清楚一些

好了,我们知道如果让材质球动起来了,修改offset即可,那么我们就开始敲代码吧

 

创建一个 TextureAnimation.cs

定义一个变量:public float XSpeed = 0.1f;//X轴移动速度

然后有了下面的代码

1      public float XSpeed = 0.1f;//X轴移动速度2  3      void FixedUpdate()4      {5          renderer.material.mainTextureOffset = new Vector2(Time.time * XSpeed, renderer.material.mainTextureOffset.y);    6      }

 我们挂到瀑布上,然后运行,我们发现瀑布动起来了,但是似乎移动方向和速度不对劲

没关系,我们刚才修改的是X轴,我们在加上Y轴和移动速度不就行了?

依法炮制得出下面的完整代码:

 1 using UnityEngine; 2 using System.Collections; 3  4 /// 纹理动画 <summary> 5 /// 纹理动画 6 /// </summary> 7 public class TextureAnimation : MonoBehaviour 8 { 9     public bool MoveX = false;//是否移动X10     public bool ToUp = false;//往上移动11     public float XSpeed = 0.1f;//X轴移动速度12     private float offsetX = 0;13     14     public bool MoveY = false;//是否移动Y15     public bool ToLeft = false;//往左移动16     public float YSpeed = 0.1f;//Y轴移动速度17     private float offsetY = 0;18 19     20     void FixedUpdate()21     {22         if (MoveX)23         {24             offsetX = Time.time * XSpeed;25             if (ToUp) offsetX *= -1;26         }27 28         if (MoveY)29         {30             offsetY = Time.time * YSpeed;31             if (ToLeft) offsetY *= -1;32         }33 34         renderer.material.mainTextureOffset = new Vector2(offsetX, offsetY);    35     }36 }

 

我就不多解释了,房东一会儿过来收房租了

真烦,我都租了大半年了,想在续租一个月,因为还有一个月我才上班

原来房租是850一个月,现在居然想收我900一个月

原因是我只续租一个月

我教了一千块押金,他怕我跑了不给水电费,非要我在给一千块

我让他来收电费他也不来,说太冷了。。。。

什么人啊这是。。。

不说了,我先闪了

 

本文链接:http://www.cnblogs.com/shenggege/p/4264463.html

unity3d 纹理动画