不知道大家有没有玩过赛车游戏
赛车游戏的跑道有路标,如下图
玩过赛车游戏的都知道,大多数赛车游戏的路标是会动的,如上图,它会从右往左运动
不会发动态图,大家脑补一下吧
没有玩过赛车游戏的也不要紧,大家见过游戏中的瀑布或者湖面吗?如下图:高山流水
当然,我这个贴图的效果不是很好,不过我这里要说的是原理,不妨碍,我们继续
图中的瀑布从上往下流动
我们都知道,如果用粒子的话,有几百个瀑布,在手机上肯定是非常卡的
差一点的手机说不定游戏刚打开就未响应了
除非要求是非常逼真的那种水才用粒子系统,能不用尽量不用
用纹理动画的话虽然达不到粒子那么逼真,但是也是一种不错的解决方案
纹理动画耗费资源还是粒子动画耗费资源呢?我们一探究竟
小二,上图
好勒客官,马上来
这是瀑布的材质球,我们手动修改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;//是否移动X 10 public bool ToUp = false;//往上移动 11 public float XSpeed = 0.1f;//X轴移动速度 12 private float offsetX = 0; 13 14 public bool MoveY = false;//是否移动Y 15 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