最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

unity shader 人物走入草叢,草的晃動(dòng)特效特效怎么做?

2023-05-09 15:10 作者:游戲開發(fā)RAIN  | 我要投稿

在游戲中,草叢可以增加游戲的真實(shí)感,但是如果草叢沒(méi)有動(dòng)態(tài)效果,會(huì)使得游戲顯得很生硬。因此,在游戲中,我們需要給草叢添加動(dòng)態(tài)效果,讓草叢隨著人物的移動(dòng)而搖曳起來(lái)。本文將介紹如何使用Unity Shader來(lái)實(shí)現(xiàn)人物走入草叢,草的晃動(dòng)特效。

一、草叢模型的制作

首先,我們需要制作草叢的模型。在Unity中,我們可以使用Unity自帶的草叢模型,也可以使用第三方模型。如果使用Unity自帶的草叢模型,可以在菜單欄中選擇GameObject->3D Object->Grass進(jìn)行創(chuàng)建。如果使用第三方模型,需要將模型導(dǎo)入到Unity中。

二、草叢材質(zhì)的制作

接下來(lái),我們需要為草叢創(chuàng)建材質(zhì)。在Unity中,材質(zhì)是決定物體外觀的重要因素之一。我們可以使用Unity自帶的材質(zhì),也可以自己創(chuàng)建材質(zhì)。在本例中,我們將創(chuàng)建一個(gè)新的材質(zhì)。

  1. 創(chuàng)建新材質(zhì)

在Unity中,我們可以在Project面板中右鍵點(diǎn)擊空白處,選擇Create->Material來(lái)創(chuàng)建新材質(zhì)。

  1. 編輯材質(zhì)

在Inspector面板中,我們可以編輯材質(zhì)的屬性。在本例中,我們需要編輯以下屬性:

(1)Diffuse:設(shè)置草叢的顏色。

(2)Normal Map:設(shè)置草叢的法線貼圖,用于模擬草叢的凹凸感。

(3)Alpha Cutoff:設(shè)置草叢的透明度,用于控制草叢的密度。

(4)Transparency:設(shè)置草叢的透明度,用于控制草叢的透明度。

三、草叢的晃動(dòng)特效實(shí)現(xiàn)

在上面的兩個(gè)步驟中,我們已經(jīng)完成了草叢模型和材質(zhì)的制作。接下來(lái),我們需要使用Shader來(lái)實(shí)現(xiàn)草叢的晃動(dòng)特效。

  1. 編寫Shader

在Unity中,我們可以使用Shader來(lái)實(shí)現(xiàn)草叢的晃動(dòng)特效。Shader是一種用于渲染3D圖形的程序,它可以控制物體的外觀和動(dòng)態(tài)效果。在本例中,我們將使用Shader來(lái)實(shí)現(xiàn)草叢的晃動(dòng)特效。

首先,我們需要?jiǎng)?chuàng)建一個(gè)新的Shader。在Unity中,我們可以在Project面板中右鍵點(diǎn)擊空白處,選擇Create->Shader來(lái)創(chuàng)建新Shader。

然后,我們需要編輯Shader的代碼。在本例中,我們將使用Unity自帶的Standard Shader作為基礎(chǔ),然后在其基礎(chǔ)上添加草叢的晃動(dòng)特效。下面是Shader的代碼:


Shader "Custom/GrassShader"{ Properties{ _MainTex("Texture", 2D) = "white" {} _BumpMap("Normal Map", 2D) = "bump" {} _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5 _Transparency("Transparency", Range(0.0, 1.0)) = 1.0 _WaveAmplitude("Wave Amplitude", Range(0.0, 1.0)) = 0.1 _WaveFrequency("Wave Frequency", Range(0.0, 10.0)) = 1.0 _WindDirection("Wind Direction", Vector) = (1, 1, 0) _WindSpeed("Wind Speed", Range(0.0, 10.0)) = 1.0 } SubShader{ Tags{ "RenderType"="Opaque" } LOD 100 CGPROGRAM #pragma surface surf Standard #pragma target 3.0


.

sampler2D _MainTex; ? ?sampler2D _BumpMap; ? ?float _Cutoff; ? ?float _Transparency; ? ?float _WaveAmplitude; ? ?float _WaveFrequency; ? ?float3 _WindDirection; ? ?float _WindSpeed; ? ?struct Input{ ? ? ? ?float2 uv_MainTex; ? ? ? ?float2 uv_BumpMap; ? ? ? ?float3 worldPos; ? ? ? ?float3 worldNormal; ? ? ? ?float3 worldTangent; ? ? ? ?float3 worldBinormal; ? ? ? ?float3 worldViewDir; ? ?}; ? ?void surf(Input IN, inout SurfaceOutputStandard o){ ? ? ? ?// Diffuse ? ? ? ?o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb; ? ? ? ?// Normal ? ? ? ?o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap)); ? ? ? ?// Alpha ? ? ? ?clip(o.Albedo.a - _Cutoff); ? ? ? ?// Transparency ? ? ? ?o.Alpha = _Transparency; ? ? ? ?// Wave ? ? ? ?float3 windDir = normalize(_WindDirection); ? ? ? ?float3 windVec = windDir * _WindSpeed; ? ? ? ?float3 worldPos = IN.worldPos; ? ? ? ?float3 offset = worldPos.xz * _WaveFrequency; ? ? ? ?float wave = _WaveAmplitude * (sin(dot(offset, windVec)) + 1) / 2; ? ? ? ?worldPos.y += wave; ? ? ? ?IN.worldPos = worldPos; ? ? ? ?// Lighting ? ? ? ?o.Metallic = 0; ? ? ? ?o.Smoothness = 0.5; ? ? ? ?o.Emission = 0; ? ?} ? ?ENDCG } FallBack "Diffuse" }


  1. 解析Shader

上面的Shader代碼中,我們定義了以下屬性:

(1)_MainTex:草叢的顏色貼圖。

(2)_BumpMap:草叢的法線貼圖。

(3)_Cutoff:草叢的透明度。

(4)_Transparency:草叢的透明度。

(5)_WaveAmplitude:草叢的晃動(dòng)幅度。

(6)_WaveFrequency:草叢的晃動(dòng)頻率。

(7)_WindDirection:草叢的風(fēng)向。

(8)_WindSpeed:草叢的風(fēng)速。

在surf函數(shù)中,我們實(shí)現(xiàn)了以下功能:

(1)Diffuse:設(shè)置草叢的顏色。

(2)Normal:設(shè)置草叢的法線貼圖。

(3)Alpha:控制草叢的透明度。

(4)Transparency:控制草叢的透明度。

(5)Wave:實(shí)現(xiàn)草叢的晃動(dòng)特效。

(6)Lighting:設(shè)置草叢的光照效果。

  1. 草叢的晃動(dòng)特效實(shí)現(xiàn)

在Shader中,我們使用了sin函數(shù)來(lái)實(shí)現(xiàn)草叢的晃動(dòng)特效。sin函數(shù)可以產(chǎn)生周期性的波形,我們可以通過(guò)改變參數(shù)來(lái)控制波形的幅度和頻率。

草叢的晃動(dòng)特效需要受到風(fēng)向和風(fēng)速的影響。我們可以通過(guò)改變_WindDirection和_WindSpeed來(lái)控制風(fēng)向和風(fēng)速。

四、示例

在本例中,我們將使用Unity自帶的草叢模型,創(chuàng)建一個(gè)新的材質(zhì),并使用上面的Shader來(lái)實(shí)現(xiàn)草叢的晃動(dòng)特效。

  1. 創(chuàng)建新材質(zhì)

在Unity中,我們可以在Project面板中右鍵點(diǎn)擊空白處,選擇Create->Material來(lái)創(chuàng)建新材質(zhì)。

  1. 編輯材質(zhì)

在Inspector面板中,我們可以編輯材質(zhì)的屬性。在本例中,我們需要編輯以下屬性:

(1)Diffuse:設(shè)置草叢的顏色。

(2)Normal Map:設(shè)置草叢的法線貼圖。

(3)Alpha Cutoff:設(shè)置草叢的透明度,用于控制草叢的密度。

(4)Transparency:設(shè)置草叢的透明度,用于控制草叢的透明度。

  1. 創(chuàng)建Shader

在Unity中,我們可以在Project面板中右鍵點(diǎn)擊空白處,選擇Create->Shader來(lái)創(chuàng)建新Shader。

然后,我們需要編輯Shader的代碼。在本例中,我們將使用上面的Shader代碼。

  1. 將Shader應(yīng)用到材質(zhì)中

將Shader應(yīng)用到材質(zhì)中,我們需要在材質(zhì)的Inspector面板中選擇Shader。在本例中,我們選擇Custom/GrassShader。

  1. 將材質(zhì)應(yīng)用到草叢模型中

將材質(zhì)應(yīng)用到草叢模型中,我們需要在Scene面板中選擇草叢模型,然后將材質(zhì)拖拽到Mesh Renderer組件的Material屬性中。

  1. 測(cè)試效果

在Scene視圖中,我們可以看到草叢已經(jīng)具有了晃動(dòng)特效。我們可以通過(guò)改變_WaveAmplitude和_WaveFrequency來(lái)控制草叢的晃動(dòng)幅度和頻率。我們也可以通過(guò)改變_WindDirection和_WindSpeed來(lái)控制風(fēng)向和風(fēng)速。

本文教程就到這里了,歡迎加入我的簡(jiǎn)介游戲開發(fā)學(xué)習(xí)交流群~


unity shader 人物走入草叢,草的晃動(dòng)特效特效怎么做?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
陈巴尔虎旗| 盐边县| 乐陵市| 高邑县| 九龙城区| 咸丰县| 磐石市| 河北区| 常山县| 奎屯市| 怀柔区| 满洲里市| 盐山县| 金坛市| 莱西市| 仁怀市| 新平| 临泉县| 奇台县| 青岛市| 永善县| 合川市| 如东县| 丰原市| 休宁县| 资阳市| 修武县| 天台县| 布拖县| 安溪县| 寻乌县| 台湾省| 清新县| 乐平市| 河源市| 富民县| 汶上县| 榆社县| 石渠县| 隆尧县| 左贡县|