unity螺旋丸特效實現

2021-09-26 07:29:06 字數 2824 閱讀 3094

先上效果圖

初學shader那會,做的乙個效果測試,一部分效果為shader手寫,一部分效果shaderforge外掛程式的效果。

第一步 建個球,用shaderforge拉個內發光效果shader賦給小球的材質

shaderforge連線圖如下:

第二步 再建個小點的球,寫個外發光shader,並且帶有頂點動畫,賦給小球材質

中間那個皺皺小白球,因為頂點動畫的效果,導致凹凸不平。可以看出來外發光好像剝離出來了,因為這個外發光的原理就是shader中的另外乙個pass在法線方向向外延伸,製作光暈效果。

shader**如下:

shader "unlit/waifaguan**ertex"  //shader檔案索引路徑

//表面貼圖 預設灰色

_color("color", color) = (0, 0, 0, 1) //為貼圖附加的顏色 預設為白色

_atmocolor("atmosphere color", color) = (0, 0.4, 1.0, 1) //光暈顏色

_size("size", float) = 0.1 //光暈範圍

_outlightpow("falloff",float) = 5 //光暈平方引數

_outlightstrength("transparency", float) = 15 //光暈強度

_input1("input 1", float) = 0.0

_input2("input 2", float) = 0.0

_input3("input 3", float) = 0.0

}subshader

cull back

//cg程式開始

cgprogram

//宣告頂點著色器函式為vert

#pragma vertex vert

//宣告片段著色器函式為frag

#pragma fragment frag

#include "unitycg.cginc"

//函式可能用到的引數

uniform sampler2d _maintex;

uniform float4 _maintex_st;

uniform float4 _color;

uniform float4 _atmocolor;

uniform float _size;

uniform float _outlightpow;

uniform float _outlightstrength;

float _input1;

float _input2;

float _input3;

//頂點著色器的輸出

struct vertexoutput

;//頂點著色器函式

//片段著色器函式

float4 frag(vertexoutput i) :color

endcg

}//通道2: 用於生成模型外部的光暈

pass

cull front

blend srcalpha one

cgprogram

#pragma vertex vert

#pragma fragment frag

#include "unitycg.cginc"

uniform float4 _color;

uniform float4 _atmocolor;

uniform float _size;

uniform float _outlightpow;

uniform float _outlightstrength;

float _input1;

float _input2;

float _input3;

struct vertexoutput

;float4 frag(vertexoutput i):color

endcg}}

fallback "diffuse"

}

第三步 在大球和小球之間模擬氣流效果如下圖所示:

本質上,其實也是一堆小球,一堆帶有紋理動畫效果的小球。

需要一張線圖,雖然是程式設計師,但還是自己p了一張,比較簡單:

紋理動畫通過shaderforge實現,很簡單,連線圖如下:

新建個小球,大小介於外發光和內發光的兩個球之間,建乙個新的材質,賦給小球,再把剛才的shader賦給材質。

然後橫向、縱向、斜向,按不同的尺寸複製幾份小球,效果就出來了。

Unity實現領取獎勵特效

一 效果演示 二 實現 匯入dotween外掛程式 完整 using system using unityengine using dg.tweening 特效管理 public class effectmanager monobeh iour return instance 顯示獎勵特效 例項化出...

unity之遊戲特效

運動軌跡常常用於表現 的揮舞效果,在提高速度感的同時又能讓玩家看清楚招式動作,所以是常見的一種格鬥特效。unity中可以直接使用trailrender來實現該效果。運動模糊就是保留前幾幀影像,形成一定的重影模糊效果,從而突出速度感。配合慢鏡頭使用往往能很好地表現運動高潮效果。unity中是通過mot...

flash特效原理 螺旋效果 (2)

經過上面的測試,現在對原先程式進行一些改造可以建立出不錯的效果,你會發現每次改動一些引數很多有趣的效果就會出現了。現在我們嘗試做乙個調節工具對他們的半徑,高度,圈數,視角進行創造。這次會主要借助到flash裡面 元件包。slider 元件來幫助我們完成這一次的嘗試。製作過程知道 包括slider 元...