Unity3d中使用自带动画系统制作下雨效果(一)
之前看了以前版本的unity3d demo AngryBots ,覺得里面的下雨效果不錯,剛好前段時間學習了,寫出來跟大家分享下,直接開始。
使用自帶動畫系統制作下雨效果。
先制作下雨的雨滴漣漪。
步驟1:
在project中新建文件夾,命名為rainFX。將圖片素材RainStreak及Ripple導入到rainFX文件夾中,創建一個plane,改名為RippleObj,創建一個material,命名為ripple。(將導入的Ripple貼圖的Alpha from Grayscale 打上勾,以使貼圖的背景透明)
步驟2:
將ripple材質賦給RippleObj。
修改材質的Shader為Particles/Addtive,將Ripple貼圖賦給ripple材質的Texture,在inspector窗口中修改Particle Texture,Tilling的x值設為0.1666,y為1,offset的x為0.8333,y為0。選中RippleObj,將Shader下的Tint Color改為白色。(改為白色為了使雨滴更加明顯一點)
?
修改后效果:
步驟3:
選中RippleObj,按Ctrl+6,調出Animation窗口,點擊窗口下的Ripple(material),會發現下面都是灰色不可選狀態。
點擊RippleObj右邊的一個小按鈕,會出現[Create New Clip],點擊。此時Ripple(Material)下的選項都已可用。
點擊后會出現下面的對話框,提示保存動畫文件。命名為RainAnimation,保存。
步驟4:
選擇Ripple(Material)下的Main Tex.offset.x,點擊右邊的小橫線->Addkey。
拖動時間軸到0.05,再次Addkey,修改offset.x為0.1666。分別在0幀Addkey,offset.x為0,0.05幀Addkey,offset.x為0.1666,0.1幀Addkey,offset.x為0.3333,0.15幀Addkey,offset.x為0.5,0.2幀Addkey,offset.x為0.6666,0.25幀Addkey,offset.x為0.8333。效果圖如下:
步驟5:
此時的Animation窗口中有一條從0.0—0.25的紅色斜線,用鼠標框選六個關鍵幀,右鍵—>Both Tangents—>Constant(右鍵需在紅色的關鍵點上點擊)。此時斜線被改為梯形上升的線。選擇Tint Color.a,在0.0幀修改Tint Color.a為1,0.25幀即最后一幀設置Tint Color.a為0。使動畫有一個透明漸變的效果。
到此,漣漪效果制作完成。
步驟6:開始添加腳本,控制漣漪的消失,腳本名:RippleDestroy。
1 using UnityEngine; 2 using System.Collections; 3 4 public class RippleDestroy : MonoBehaviour 5 { 6 public void DestroyMe() 7 { 8 Destroy(gameObject); //刪除自身 9 } 10 }將腳本賦給RippleObj。
在Animation窗口中,最后一幀即0.25幀處,點擊右邊的Add Event按鈕,在0.25幀添加一個事件并將DestroyMe()賦給Function。
?
步驟7:
將RippleObj拖到rainFX文件夾中,使之成為一個prefab。然后可以將場景中的RippleObj刪掉。
?創建一個空物體。GameObject—>Create Empty。改名為ripple,此時場景中只有Main Camera,ripple。
創建一個rippleFX腳本:
1 using UnityEngine; 2 using System.Collections; 3 4 public class rippleFX : MonoBehaviour 5 { 6 public GameObject rippleObj; //漣漪實例 7 int ti; //計時器 8 9 void Start () 10 { 11 12 } 13 14 void Update () 15 { 16 ti++; 17 if(ti>=5) //每隔5幀,計時器發生作用 18 { 19 GameObject tempObj=Instantiate(rippleObj) as GameObject; //復制漣漪物體 20 tempObj.transform.parent=gameObject.transform; //設置子物體 21 tempObj.animation.Play(); //播放動畫文件 22 tempObj.transform.position=transform.position+new Vector3(Random.Range(10,-10),0,Random.Range(10,-10));//移動漣漪物體到一個隨機位置 23 } 24 } 25 }將rippleFX腳本賦給空物體ripple,再將prefab物體RippleObj賦給ripple的腳本的變量RippleObj即可。
點擊運行,即可出現地上很多漣漪的效果。
?漣漪做完了,下一篇繼續寫雨滴的做法~~
轉載于:https://www.cnblogs.com/Sakya00/p/3313359.html
總結
以上是生活随笔為你收集整理的Unity3d中使用自带动画系统制作下雨效果(一)的全部內容,希望文章能夠幫你解決所遇到的問題。