不知道大家有沒有玩過賽車游戲
賽車游戲的跑道有路標,如下圖
玩過賽車游戲的都知道,大多數賽車游戲的路標是會動的,如上圖,它會從右往左運動
不會發動態圖,大家腦補一下吧
沒有玩過賽車游戲的也不要緊,大家見過游戲中的瀑布或者湖面嗎?如下圖:高山流水
當然,我這個貼圖的效果不是很好,不過我這里要說的是原理,不妨礙,我們繼續
圖中的瀑布從上往下流動
我們都知道,如果用粒子的話,有幾百個瀑布,在手機上肯定是非常卡的
差一點的手機說不定游戲剛打開就未響應了
除非要求是非常逼真的那種水才用粒子系統,能不用盡量不用
用紋理動畫的話雖然達不到粒子那么逼真,但是也是一種不錯的解決方案
紋理動畫耗費資源還是粒子動畫耗費資源呢?我們一探究竟
小二,上圖
好勒客官,馬上來
這是瀑布的材質球,我們手動修改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