国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity制作隨風(fēng)搖擺的植物

這篇具有很好參考價(jià)值的文章主要介紹了Unity制作隨風(fēng)搖擺的植物。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

今天記錄一下如何實(shí)現(xiàn)隨風(fēng)搖擺的植物,之前項(xiàng)目里面的植物搖擺實(shí)現(xiàn)是使用骨骼動(dòng)畫實(shí)現(xiàn)的,這種方式太消耗性能,植物這種東西沒(méi)必要,直接使用頂點(diǎn)動(dòng)畫即可。

準(zhǔn)備

植物不需要使用標(biāo)準(zhǔn)的PBR流程,基礎(chǔ)的顏色貼圖加上法向貼圖即可,它不區(qū)分金屬非金屬,精致一些可以加一個(gè)粗糙度貼圖和AO。
我使用的植物模型還區(qū)分了樹(shù)干和樹(shù)也,通過(guò)頂點(diǎn)色的alpha通道去區(qū)分,這樣可以在一個(gè)材質(zhì)里面使用兩套貼圖。

首先看一下資源:
貼圖有一張flowmap用于處理頂點(diǎn)動(dòng)畫,一張基礎(chǔ)色貼圖,一張法向貼圖
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
頂點(diǎn)色 R通道用于區(qū)分可以擺動(dòng)的幅度的強(qiáng)弱,越靠近地面,擺動(dòng)越弱,這個(gè)用于控制整個(gè)樹(shù)木的大范圍的搖動(dòng)效果
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
G通道用于處理樹(shù)葉的擺動(dòng)幅度的強(qiáng)弱,越靠近樹(shù)干,擺動(dòng)越弱,這個(gè)用于控制樹(shù)葉的擺動(dòng)
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
這兩個(gè)通道一起混合使用,用來(lái)實(shí)現(xiàn)頂點(diǎn)動(dòng)畫。
B通道沒(méi)有內(nèi)容
A通道用于區(qū)分樹(shù)干和樹(shù)葉 白色的是樹(shù)干,黑色的是樹(shù)葉
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎

渲染實(shí)現(xiàn)

渲染使用ASE連連看連出來(lái)先
樹(shù)葉是面片,需要雙面渲染的,所以我們需要將剔除模式Cull 設(shè)置為OFF
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎

樹(shù)葉的形狀我們使用樹(shù)葉的alpha通道進(jìn)行裁剪,所以需要使用透明檢測(cè)
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
基礎(chǔ)顏色,通過(guò)A通道進(jìn)行l(wèi)erp插值,將樹(shù)葉和樹(shù)干插值出來(lái),還需要透明度進(jìn)行透明裁剪
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
法向這里也是使用了相同的方式,lerp插值,但是注意,由于樹(shù)葉使用了雙面渲染,背面法向是錯(cuò)誤的,我們需要將法向的Z軸進(jìn)行翻轉(zhuǎn)(Z軸在切線空間里面是和法向朝向平行的)
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎

實(shí)現(xiàn)擺動(dòng)

我們先通過(guò)最基礎(chǔ)的跟隨時(shí)間進(jìn)行擺動(dòng),可以自定義方向
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
Sin函數(shù)使用后的曲線圖是以下這樣的
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
如果先乘以PI以后再Sin,效果就在1的數(shù)值內(nèi)半個(gè)循環(huán),更好的控制
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
接下來(lái)我們將樹(shù)葉擺動(dòng)也添加進(jìn)來(lái),這里是受到頂點(diǎn)色的G通道控制
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
這里我們使用的cos去運(yùn)算,它剛好和sin隔開(kāi)
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
實(shí)現(xiàn)這一部以后,我們實(shí)現(xiàn)了一個(gè)不錯(cuò)的擺動(dòng)的效果,但是缺少了一些的隨機(jī)性,最簡(jiǎn)單的方法就是添加一張擾動(dòng)圖,使用擾動(dòng)圖去擾動(dòng)樹(shù)葉,讓樹(shù)葉有更多的隨機(jī)性,看起來(lái)更自然
下圖為使用了擾動(dòng)圖實(shí)現(xiàn)的節(jié)點(diǎn),也使用到了頂點(diǎn)動(dòng)畫的G通道控制樹(shù)葉。
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
上面的方法還需要額外去采樣一張圖片,接下來(lái)我們使用一種程序化的方法,直接使用一個(gè)節(jié)點(diǎn)去實(shí)現(xiàn)擾動(dòng)
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
這個(gè)節(jié)點(diǎn)是通過(guò)UE里面的方式翻譯過(guò)來(lái)的,這里要著重感謝一些Kerry大佬。節(jié)點(diǎn)是在Shader Function里面,自行查閱
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
我們就可以通過(guò)調(diào)整參數(shù)去控制整個(gè)樹(shù)干帶著樹(shù)枝和樹(shù)葉偏移,還能模擬樹(shù)葉的擺動(dòng),效果挺不錯(cuò)
unity樹(shù)隨風(fēng)擺動(dòng),unity,unity,游戲引擎
最后附上ASE代碼:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-844501.html

// Made with Amplify Shader Editor
// Available at the Unity Asset Store - http://u3d.as/y3X 
Shader "Scene_Tree"
{
	Properties
	{
		_Cutoff( "Mask Clip Value", Float ) = 0.5
		_BaseMap_Beaf("BaseMap_Beaf", 2D) = "white" {}
		_NormalMap_Beaf("NormalMap_Beaf", 2D) = "bump" {}
		_BaseMap_Branch("BaseMap_Branch", 2D) = "white" {}
		_NormalMap_Branch("NormalMap_Branch", 2D) = "bump" {}
		_Roughness("Roughness", Range( 0 , 1)) = 0.5
		_GlobalWindSpeed("GlobalWindSpeed", Float) = 1
		_GlobalWindIntensity("GlobalWindIntensity", Float) = 1
		_GlobalWindDirection("GlobalWindDirection", Vector) = (0,0,0,0)
		_SmallWindSpeed("SmallWindSpeed", Float) = 1
		_SmallWindIntensity("SmallWindIntensity", Float) = 1
		_SmallWindDirection("SmallWindDirection", Vector) = (0,0,1,0)
		[HideInInspector] _texcoord( "", 2D ) = "white" {}
		[HideInInspector] __dirty( "", Int ) = 1
	}

	SubShader
	{
		Tags{ "RenderType" = "Opaque"  "Queue" = "AlphaTest+0" "DisableBatching" = "True" }
		Cull Off
		CGINCLUDE
		#include "UnityPBSLighting.cginc"
		#include "UnityShaderVariables.cginc"
		#include "Lighting.cginc"
		#pragma target 3.0
		#pragma multi_compile_instancing
		#ifdef UNITY_PASS_SHADOWCASTER
			#undef INTERNAL_DATA
			#undef WorldReflectionVector
			#undef WorldNormalVector
			#define INTERNAL_DATA half3 internalSurfaceTtoW0; half3 internalSurfaceTtoW1; half3 internalSurfaceTtoW2;
			#define WorldReflectionVector(data,normal) reflect (data.worldRefl, half3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal)))
			#define WorldNormalVector(data,normal) half3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal))
		#endif
		struct Input
		{
			float3 worldPos;
			float2 uv_texcoord;
			float4 vertexColor : COLOR;
			float3 worldNormal;
			INTERNAL_DATA
			half ASEVFace : VFACE;
		};

		struct SurfaceOutputCustomLightingCustom
		{
			half3 Albedo;
			half3 Normal;
			half3 Emission;
			half Metallic;
			half Smoothness;
			half Occlusion;
			half Alpha;
			Input SurfInput;
			UnityGIInput GIData;
		};

		uniform float _GlobalWindSpeed;
		uniform float _GlobalWindIntensity;
		uniform float3 _GlobalWindDirection;
		uniform float3 _SmallWindDirection;
		uniform float _SmallWindSpeed;
		uniform float _SmallWindIntensity;
		uniform sampler2D _BaseMap_Beaf;
		SamplerState sampler_BaseMap_Beaf;
		uniform float4 _BaseMap_Beaf_ST;
		uniform sampler2D _BaseMap_Branch;
		uniform float4 _BaseMap_Branch_ST;
		uniform sampler2D _NormalMap_Beaf;
		uniform float4 _NormalMap_Beaf_ST;
		SamplerState sampler_NormalMap_Beaf;
		uniform sampler2D _NormalMap_Branch;
		uniform float4 _NormalMap_Branch_ST;
		uniform float _Roughness;
		uniform float _Cutoff = 0.5;


		float3 RotateAroundAxis( float3 center, float3 original, float3 u, float angle )
		{
			original -= center;
			float C = cos( angle );
			float S = sin( angle );
			float t = 1 - C;
			float m00 = t * u.x * u.x + C;
			float m01 = t * u.x * u.y - S * u.z;
			float m02 = t * u.x * u.z + S * u.y;
			float m10 = t * u.x * u.y + S * u.z;
			float m11 = t * u.y * u.y + C;
			float m12 = t * u.y * u.z - S * u.x;
			float m20 = t * u.x * u.z - S * u.y;
			float m21 = t * u.y * u.z + S * u.x;
			float m22 = t * u.z * u.z + C;
			float3x3 finalMatrix = float3x3( m00, m01, m02, m10, m11, m12, m20, m21, m22 );
			return mul( finalMatrix, original ) + center;
		}


		void vertexDataFunc( inout appdata_full v, out Input o )
		{
			UNITY_INITIALIZE_OUTPUT( Input, o );
			float temp_output_34_0 = ( ( _GlobalWindSpeed * _Time.y ) * UNITY_PI );
			float temp_output_42_0 = ( _GlobalWindIntensity * 0.1 );
			float3 temp_output_7_0_g2 = _SmallWindDirection;
			float3 RotateAxis34_g2 = cross( temp_output_7_0_g2 , float3(0,1,0) );
			float3 wind_direction31_g2 = temp_output_7_0_g2;
			float3 wind_speed40_g2 = ( ( _Time.y * _SmallWindSpeed ) * float3(0.5,-0.5,-0.5) );
			float3 ase_worldPos = mul( unity_ObjectToWorld, v.vertex );
			float3 temp_cast_0 = (1.0).xxx;
			float3 temp_output_22_0_g2 = abs( ( ( frac( ( ( ( wind_direction31_g2 * wind_speed40_g2 ) + ( ase_worldPos / 10.0 ) ) + 0.5 ) ) * 2.0 ) - temp_cast_0 ) );
			float3 temp_cast_1 = (3.0).xxx;
			float dotResult30_g2 = dot( ( ( temp_output_22_0_g2 * temp_output_22_0_g2 ) * ( temp_cast_1 - ( temp_output_22_0_g2 * 2.0 ) ) ) , wind_direction31_g2 );
			float BigTriangleWave42_g2 = dotResult30_g2;
			float3 temp_cast_2 = (1.0).xxx;
			float3 temp_output_59_0_g2 = abs( ( ( frac( ( ( wind_speed40_g2 + ( ase_worldPos / 2.0 ) ) + 0.5 ) ) * 2.0 ) - temp_cast_2 ) );
			float3 temp_cast_3 = (3.0).xxx;
			float SmallTriangleWave52_g2 = distance( ( ( temp_output_59_0_g2 * temp_output_59_0_g2 ) * ( temp_cast_3 - ( temp_output_59_0_g2 * 2.0 ) ) ) , float3(0,0,0) );
			float3 rotatedValue72_g2 = RotateAroundAxis( ( ase_worldPos - float3(0,0.1,0) ), ase_worldPos, normalize( RotateAxis34_g2 ), ( ( BigTriangleWave42_g2 + SmallTriangleWave52_g2 ) * ( 2.0 * UNITY_PI ) ) );
			float3 worldToObj81_g2 = mul( unity_WorldToObject, float4( rotatedValue72_g2, 1 ) ).xyz;
			float3 ase_vertex3Pos = v.vertex.xyz;
			float3 VertexOffset39 = ( ( ( ( sin( temp_output_34_0 ) * temp_output_42_0 ) * _GlobalWindDirection ) * v.color.r ) + ( v.color.g * ( _GlobalWindDirection * ( cos( temp_output_34_0 ) * temp_output_42_0 ) ) ) + ( v.color.g * ( worldToObj81_g2 - ase_vertex3Pos ) * _SmallWindIntensity ) );
			v.vertex.xyz += VertexOffset39;
			v.vertex.w = 1;
		}

		inline half4 LightingStandardCustomLighting( inout SurfaceOutputCustomLightingCustom s, half3 viewDir, UnityGI gi )
		{
			UnityGIInput data = s.GIData;
			Input i = s.SurfInput;
			half4 c = 0;
			float2 uv_BaseMap_Beaf = i.uv_texcoord * _BaseMap_Beaf_ST.xy + _BaseMap_Beaf_ST.zw;
			float4 tex2DNode3 = tex2D( _BaseMap_Beaf, uv_BaseMap_Beaf );
			float lerpResult24 = lerp( tex2DNode3.a , 1.0 , i.vertexColor.a);
			float Alpha22 = lerpResult24;
			SurfaceOutputStandard s2 = (SurfaceOutputStandard ) 0;
			float2 uv_BaseMap_Branch = i.uv_texcoord * _BaseMap_Branch_ST.xy + _BaseMap_Branch_ST.zw;
			float4 lerpResult6 = lerp( tex2DNode3 , tex2D( _BaseMap_Branch, uv_BaseMap_Branch ) , i.vertexColor.a);
			float4 BaseColor8 = lerpResult6;
			s2.Albedo = BaseColor8.rgb;
			float2 uv_NormalMap_Beaf = i.uv_texcoord * _NormalMap_Beaf_ST.xy + _NormalMap_Beaf_ST.zw;
			float3 tex2DNode10 = UnpackNormal( tex2D( _NormalMap_Beaf, uv_NormalMap_Beaf ) );
			float3 appendResult26 = (float3(tex2DNode10.r , tex2DNode10.g , -tex2DNode10.b));
			float3 switchResult25 = (((i.ASEVFace>0)?(tex2DNode10):(appendResult26)));
			float2 uv_NormalMap_Branch = i.uv_texcoord * _NormalMap_Branch_ST.xy + _NormalMap_Branch_ST.zw;
			float3 lerpResult12 = lerp( switchResult25 , UnpackNormal( tex2D( _NormalMap_Branch, uv_NormalMap_Branch ) ) , i.vertexColor.a);
			float3 Normal14 = lerpResult12;
			s2.Normal = WorldNormalVector( i , Normal14 );
			s2.Emission = float3( 0,0,0 );
			s2.Metallic = 0.0;
			s2.Smoothness = ( 1.0 - _Roughness );
			s2.Occlusion = 1.0;

			data.light = gi.light;

			UnityGI gi2 = gi;
			#ifdef UNITY_PASS_FORWARDBASE
			Unity_GlossyEnvironmentData g2 = UnityGlossyEnvironmentSetup( s2.Smoothness, data.worldViewDir, s2.Normal, float3(0,0,0));
			gi2 = UnityGlobalIllumination( data, s2.Occlusion, s2.Normal, g2 );
			#endif

			float3 surfResult2 = LightingStandard ( s2, viewDir, gi2 ).rgb;
			surfResult2 += s2.Emission;

			#ifdef UNITY_PASS_FORWARDADD//2
			surfResult2 -= s2.Emission;
			#endif//2
			c.rgb = surfResult2;
			c.a = 1;
			clip( Alpha22 - _Cutoff );
			return c;
		}

		inline void LightingStandardCustomLighting_GI( inout SurfaceOutputCustomLightingCustom s, UnityGIInput data, inout UnityGI gi )
		{
			s.GIData = data;
		}

		void surf( Input i , inout SurfaceOutputCustomLightingCustom o )
		{
			o.SurfInput = i;
			o.Normal = float3(0,0,1);
		}

		ENDCG
		CGPROGRAM
		#pragma surface surf StandardCustomLighting keepalpha fullforwardshadows vertex:vertexDataFunc 

		ENDCG
		Pass
		{
			Name "ShadowCaster"
			Tags{ "LightMode" = "ShadowCaster" }
			ZWrite On
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			#pragma target 3.0
			#pragma multi_compile_shadowcaster
			#pragma multi_compile UNITY_PASS_SHADOWCASTER
			#pragma skip_variants FOG_LINEAR FOG_EXP FOG_EXP2
			#include "HLSLSupport.cginc"
			#if ( SHADER_API_D3D11 || SHADER_API_GLCORE || SHADER_API_GLES || SHADER_API_GLES3 || SHADER_API_METAL || SHADER_API_VULKAN )
				#define CAN_SKIP_VPOS
			#endif
			#include "UnityCG.cginc"
			#include "Lighting.cginc"
			#include "UnityPBSLighting.cginc"
			struct v2f
			{
				V2F_SHADOW_CASTER;
				float2 customPack1 : TEXCOORD1;
				float4 tSpace0 : TEXCOORD2;
				float4 tSpace1 : TEXCOORD3;
				float4 tSpace2 : TEXCOORD4;
				half4 color : COLOR0;
				UNITY_VERTEX_INPUT_INSTANCE_ID
				UNITY_VERTEX_OUTPUT_STEREO
			};
			v2f vert( appdata_full v )
			{
				v2f o;
				UNITY_SETUP_INSTANCE_ID( v );
				UNITY_INITIALIZE_OUTPUT( v2f, o );
				UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( o );
				UNITY_TRANSFER_INSTANCE_ID( v, o );
				Input customInputData;
				vertexDataFunc( v, customInputData );
				float3 worldPos = mul( unity_ObjectToWorld, v.vertex ).xyz;
				half3 worldNormal = UnityObjectToWorldNormal( v.normal );
				half3 worldTangent = UnityObjectToWorldDir( v.tangent.xyz );
				half tangentSign = v.tangent.w * unity_WorldTransformParams.w;
				half3 worldBinormal = cross( worldNormal, worldTangent ) * tangentSign;
				o.tSpace0 = float4( worldTangent.x, worldBinormal.x, worldNormal.x, worldPos.x );
				o.tSpace1 = float4( worldTangent.y, worldBinormal.y, worldNormal.y, worldPos.y );
				o.tSpace2 = float4( worldTangent.z, worldBinormal.z, worldNormal.z, worldPos.z );
				o.customPack1.xy = customInputData.uv_texcoord;
				o.customPack1.xy = v.texcoord;
				TRANSFER_SHADOW_CASTER_NORMALOFFSET( o )
				o.color = v.color;
				return o;
			}
			half4 frag( v2f IN
			#if !defined( CAN_SKIP_VPOS )
			, UNITY_VPOS_TYPE vpos : VPOS
			#endif
			) : SV_Target
			{
				UNITY_SETUP_INSTANCE_ID( IN );
				Input surfIN;
				UNITY_INITIALIZE_OUTPUT( Input, surfIN );
				surfIN.uv_texcoord = IN.customPack1.xy;
				float3 worldPos = float3( IN.tSpace0.w, IN.tSpace1.w, IN.tSpace2.w );
				half3 worldViewDir = normalize( UnityWorldSpaceViewDir( worldPos ) );
				surfIN.worldPos = worldPos;
				surfIN.worldNormal = float3( IN.tSpace0.z, IN.tSpace1.z, IN.tSpace2.z );
				surfIN.internalSurfaceTtoW0 = IN.tSpace0.xyz;
				surfIN.internalSurfaceTtoW1 = IN.tSpace1.xyz;
				surfIN.internalSurfaceTtoW2 = IN.tSpace2.xyz;
				surfIN.vertexColor = IN.color;
				SurfaceOutputCustomLightingCustom o;
				UNITY_INITIALIZE_OUTPUT( SurfaceOutputCustomLightingCustom, o )
				surf( surfIN, o );
				UnityGI gi;
				UNITY_INITIALIZE_OUTPUT( UnityGI, gi );
				o.Alpha = LightingStandardCustomLighting( o, worldViewDir, gi ).a;
				#if defined( CAN_SKIP_VPOS )
				float2 vpos = IN.pos;
				#endif
				SHADOW_CASTER_FRAGMENT( IN )
			}
			ENDCG
		}
	}
	Fallback "Diffuse"
	CustomEditor "ASEMaterialInspector"
}
/*ASEBEGIN
Version=18703
2120;79.2;1910;949;4682.4;-429.11;3.238338;True;False
Node;AmplifyShaderEditor.CommentaryNode;67;-3105.601,1169.338;Inherit;False;2873.335;1730.373;wind;29;30;29;33;31;34;43;41;45;42;32;52;44;37;46;53;48;38;56;35;59;55;49;47;50;39;61;62;63;66;wind;1,1,1,1;0;0
Node;AmplifyShaderEditor.RangedFloatNode;29;-3055.601,1219.338;Inherit;False;Property;_GlobalWindSpeed;GlobalWindSpeed;6;0;Create;True;0;0;False;0;False;1;1;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleTimeNode;30;-3043.186,1352.248;Inherit;False;1;0;FLOAT;1;False;1;FLOAT;0
Node;AmplifyShaderEditor.PiNode;33;-2783.186,1482.248;Inherit;False;1;0;FLOAT;1;False;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;31;-2745.186,1287.248;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.CommentaryNode;15;-2930.545,336.9109;Inherit;False;1445.533;706.7714;Normal;8;14;12;13;11;25;26;27;10;Normal;1,1,1,1;0;0
Node;AmplifyShaderEditor.RangedFloatNode;41;-2955.43,1670.371;Inherit;False;Property;_GlobalWindIntensity;GlobalWindIntensity;7;0;Create;True;0;0;False;0;False;1;1;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.RangedFloatNode;43;-2925.43,1805.371;Inherit;False;Constant;_Float1;Float 1;8;0;Create;True;0;0;False;0;False;0.1;0;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;34;-2557.186,1286.846;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.SamplerNode;10;-2878.545,386.9108;Inherit;True;Property;_NormalMap_Beaf;NormalMap_Beaf;2;0;Create;True;0;0;False;0;False;-1;None;None;True;0;False;bump;Auto;True;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SinOpNode;32;-2232.243,1288.323;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;42;-2637.43,1734.371;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.CosOpNode;45;-2219.916,1709.438;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.NegateNode;27;-2584.474,549.029;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;46;-1915.738,1713.87;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.DynamicAppendNode;26;-2416.474,461.029;Inherit;False;FLOAT3;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;44;-1913.612,1285.143;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.Vector3Node;37;-1748.591,1486.79;Inherit;False;Property;_GlobalWindDirection;GlobalWindDirection;8;0;Create;True;0;0;False;0;False;0,0,0;0,0,0;0;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
Node;AmplifyShaderEditor.CommentaryNode;9;-2927.645,-558.358;Inherit;False;1016.54;730.0001;BaseColor;7;3;5;6;7;8;22;24;BaseColor;1,1,1,1;0;0
Node;AmplifyShaderEditor.Vector3Node;53;-1793.54,2134.001;Inherit;False;Property;_SmallWindDirection;SmallWindDirection;11;0;Create;True;0;0;False;0;False;0,0,1;0,0,1;0;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3
Node;AmplifyShaderEditor.RangedFloatNode;52;-1794.54,2038.001;Inherit;False;Property;_SmallWindSpeed;SmallWindSpeed;9;0;Create;True;0;0;False;0;False;1;1;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.RangedFloatNode;56;-1334.54,2214.001;Inherit;False;Property;_SmallWindIntensity;SmallWindIntensity;10;0;Create;True;0;0;False;0;False;1;1;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.SamplerNode;3;-2875.645,-508.358;Inherit;True;Property;_BaseMap_Beaf;BaseMap_Beaf;1;0;Create;True;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.VertexColorNode;13;-2814.545,862.9108;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SwitchByFaceNode;25;-2268.474,395.029;Inherit;False;2;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.VertexColorNode;7;-2811.645,-32.35796;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;35;-1497.784,1283.848;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.SamplerNode;11;-2880.545,614.9108;Inherit;True;Property;_NormalMap_Branch;NormalMap_Branch;4;0;Create;True;0;0;False;0;False;-1;None;None;True;0;False;bump;Auto;True;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.FunctionNode;59;-1455.411,2047.701;Inherit;False;SimpleGrassWind;-1;;2;205beb641ec413548834c7eb5a342298;0;2;1;FLOAT;1;False;7;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;48;-1499.984,1701.418;Inherit;False;2;2;0;FLOAT3;0,0,0;False;1;FLOAT;0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.VertexColorNode;38;-1283.142,1459.165;Inherit;False;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SamplerNode;5;-2877.645,-280.358;Inherit;True;Property;_BaseMap_Branch;BaseMap_Branch;3;0;Create;True;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.LerpOp;12;-2037.545,548.9108;Inherit;False;3;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT;0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;49;-1067.25,1675.393;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;55;-1048.54,2023.562;Inherit;False;3;3;0;FLOAT;0;False;1;FLOAT3;0,0,0;False;2;FLOAT;0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.LerpOp;6;-2431.645,-356.358;Inherit;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;47;-1055.393,1285.441;Inherit;False;2;2;0;FLOAT3;0,0,0;False;1;FLOAT;0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.SimpleAddOpNode;50;-708.7696,1479.748;Inherit;False;3;3;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.RangedFloatNode;19;-1065.259,332.4771;Inherit;False;Property;_Roughness;Roughness;5;0;Create;True;0;0;False;0;False;0.5;0.5;0;1;0;1;FLOAT;0
Node;AmplifyShaderEditor.LerpOp;24;-2397.259,-119.5229;Inherit;False;3;0;FLOAT;0;False;1;FLOAT;1;False;2;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;8;-2135.906,-343.3085;Inherit;False;BaseColor;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;14;-1690.807,543.9604;Inherit;False;Normal;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.OneMinusNode;20;-715.2592,383.4771;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;39;-457.0661,1478.18;Inherit;False;VertexOffset;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.GetLocalVarNode;17;-873.2592,133.4771;Inherit;False;14;Normal;1;0;OBJECT;;False;1;FLOAT3;0
Node;AmplifyShaderEditor.GetLocalVarNode;16;-900.2592,17.47711;Inherit;False;8;BaseColor;1;0;OBJECT;;False;1;COLOR;0
Node;AmplifyShaderEditor.RangedFloatNode;18;-700.2592,205.4771;Inherit;False;Constant;_Float0;Float 0;4;0;Create;True;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;22;-2144.259,-66.52289;Inherit;False;Alpha;-1;True;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.PannerNode;62;-1493.22,2562.444;Inherit;False;3;0;FLOAT2;0,0;False;2;FLOAT2;0.1,0;False;1;FLOAT;1;False;1;FLOAT2;0
Node;AmplifyShaderEditor.SamplerNode;61;-1235.692,2534.748;Inherit;True;Property;_WindNoise;WindNoise;12;0;Create;True;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.Vector2Node;66;-1789.412,2737.511;Inherit;False;Constant;_NoiseWindSpeed;NoiseWindSpeed;13;0;Create;True;0;0;False;0;False;1,0;0,0;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
Node;AmplifyShaderEditor.GetLocalVarNode;40;-338.1208,457.1961;Inherit;False;39;VertexOffset;1;0;OBJECT;;False;1;FLOAT3;0
Node;AmplifyShaderEditor.GetLocalVarNode;23;-338.259,344.4771;Inherit;False;22;Alpha;1;0;OBJECT;;False;1;FLOAT;0
Node;AmplifyShaderEditor.CustomStandardSurface;2;-389,88.5;Inherit;False;Metallic;Tangent;6;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,1;False;2;FLOAT3;0,0,0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;1;False;1;FLOAT3;0
Node;AmplifyShaderEditor.TextureCoordinatesNode;63;-1841.955,2562.156;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.StandardSurfaceOutputNode;0;0,0;Float;False;True;-1;2;ASEMaterialInspector;0;0;CustomLighting;Scene_Tree;False;False;False;False;False;False;False;False;False;False;False;False;False;True;False;False;True;False;False;False;False;Off;0;False;-1;0;False;-1;False;0;False;-1;0;False;-1;False;0;Custom;0.5;True;True;0;True;Opaque;;AlphaTest;All;14;all;True;True;True;True;0;False;-1;False;0;False;-1;255;False;-1;255;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;False;2;15;10;25;False;0.5;True;0;0;False;-1;0;False;-1;0;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;0;0,0,0,0;VertexOffset;True;False;Cylindrical;False;Relative;0;;0;-1;-1;-1;0;False;0;0;False;-1;-1;0;False;-1;0;0;0;False;0.1;False;-1;0;False;-1;False;15;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;4;FLOAT;0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT;0;False;9;FLOAT;0;False;10;FLOAT;0;False;13;FLOAT3;0,0,0;False;11;FLOAT3;0,0,0;False;12;FLOAT3;0,0,0;False;14;FLOAT4;0,0,0,0;False;15;FLOAT3;0,0,0;False;0
WireConnection;31;0;29;0
WireConnection;31;1;30;0
WireConnection;34;0;31;0
WireConnection;34;1;33;0
WireConnection;32;0;34;0
WireConnection;42;0;41;0
WireConnection;42;1;43;0
WireConnection;45;0;34;0
WireConnection;27;0;10;3
WireConnection;46;0;45;0
WireConnection;46;1;42;0
WireConnection;26;0;10;1
WireConnection;26;1;10;2
WireConnection;26;2;27;0
WireConnection;44;0;32;0
WireConnection;44;1;42;0
WireConnection;25;0;10;0
WireConnection;25;1;26;0
WireConnection;35;0;44;0
WireConnection;35;1;37;0
WireConnection;59;1;52;0
WireConnection;59;7;53;0
WireConnection;48;0;37;0
WireConnection;48;1;46;0
WireConnection;12;0;25;0
WireConnection;12;1;11;0
WireConnection;12;2;13;4
WireConnection;49;0;38;2
WireConnection;49;1;48;0
WireConnection;55;0;38;2
WireConnection;55;1;59;0
WireConnection;55;2;56;0
WireConnection;6;0;3;0
WireConnection;6;1;5;0
WireConnection;6;2;7;4
WireConnection;47;0;35;0
WireConnection;47;1;38;1
WireConnection;50;0;47;0
WireConnection;50;1;49;0
WireConnection;50;2;55;0
WireConnection;24;0;3;4
WireConnection;24;2;7;4
WireConnection;8;0;6;0
WireConnection;14;0;12;0
WireConnection;20;0;19;0
WireConnection;39;0;50;0
WireConnection;22;0;24;0
WireConnection;62;0;63;0
WireConnection;62;2;66;0
WireConnection;61;1;62;0
WireConnection;2;0;16;0
WireConnection;2;1;17;0
WireConnection;2;3;18;0
WireConnection;2;4;20;0
WireConnection;0;10;23;0
WireConnection;0;13;2;0
WireConnection;0;11;40;0
ASEEND*/
//CHKSM=8F50F204A593FDCB0B4FA785033F06AA0ABD468A

到了這里,關(guān)于Unity制作隨風(fēng)搖擺的植物的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【unity】快速了解游戲制作流程-制作九宮格簡(jiǎn)單游戲demo

    【unity】快速了解游戲制作流程-制作九宮格簡(jiǎn)單游戲demo

    ? ? ? ? hi~大家好呀!歡迎來(lái)到我的unity學(xué)習(xí)筆記系列~,本篇我會(huì)簡(jiǎn)單的記錄一下游戲流程并且簡(jiǎn)單上手一個(gè)通過(guò)九宮格移動(dòng)到指定位置的小游戲,話不多說(shuō),我們直接開(kāi)始吧~ ???????? ????????本篇源自我看B站一位up主的視頻所做的筆記,感興趣的可以去看原視頻哦

    2023年04月08日
    瀏覽(38)
  • Unity制作 小球吃金幣 游戲

    Unity制作 小球吃金幣 游戲

    工程源文件下載地址-百度網(wǎng)盤 1. 新建一個(gè)項(xiàng)目 2. 新建一個(gè)平面對(duì)象 3. 新建一個(gè)材質(zhì)球 為材質(zhì)球設(shè)置顏色 5. 將材質(zhì)球拖拽賦值給平面 6.? 創(chuàng)建立方體對(duì)象,拉伸至平面寬度 7.?再?gòu)?fù)制三個(gè)立方體、調(diào)整位置、添加材質(zhì),用四個(gè)調(diào)整過(guò)的立方體將平面圍起來(lái) 8. 創(chuàng)建一個(gè)球體(

    2024年01月15日
    瀏覽(16)
  • Unity游戲開(kāi)始界面制作教學(xué)

    Unity游戲開(kāi)始界面制作教學(xué)

    第一步: 新建一個(gè)Scene 第二步: 在Scene里添加一個(gè)Canvas對(duì)象(在Hierarchy右鍵–UI–Canavas) 如何給添加開(kāi)始按鈕: 在Canvas右鍵–UI–Button 如何給按鈕添加文字: Button的子對(duì)象Text的Text組件可以修改按鈕上的文字 如何給按鈕添加事件: Button對(duì)象的Button組件最下面有一個(gè)“Oncl

    2024年02月02日
    瀏覽(92)
  • 編程小游戲制作植物僵尸,編程小游戲教程視頻

    編程小游戲制作植物僵尸,編程小游戲教程視頻

    大家好,給大家分享一下編程小游戲植物大戰(zhàn)僵尸,很多人還不知道這一點(diǎn)。下面詳細(xì)解釋一下?,F(xiàn)在讓我們來(lái)看看! 大家好,今天給大家?guī)?lái)30個(gè) Python 小游戲,喜歡記得點(diǎn)贊、一定要收藏! 文章目錄 有手就行 1、吃金幣 2、打乒乓 3、滑雪 4、并夕夕版飛機(jī)大戰(zhàn) 5、打地鼠

    2024年02月22日
    瀏覽(19)
  • 【unity demo】使用unity制作射擊游戲demo (上)

    【unity demo】使用unity制作射擊游戲demo (上)

    主要是安裝unity對(duì)應(yīng)的版本,并配置相應(yīng)的ide,目前我用的是unity 2021.3.21。 通過(guò)edit-prefreneces面板,external tools選項(xiàng)中配置ide環(huán)境,自動(dòng)使用vs code來(lái)打開(kāi)工程中的代碼文檔。 即游戲設(shè)計(jì)文檔(Game Design Document, GDD),我們需要預(yù)先對(duì)待實(shí)現(xiàn)的完整demo進(jìn)行設(shè)計(jì),包括5個(gè)部分:

    2024年02月08日
    瀏覽(21)
  • unity——小球酷跑游戲制作

    unity——小球酷跑游戲制作

    所有變量與物體名的命名原則都是見(jiàn)名知意 一、創(chuàng)建一個(gè)unity項(xiàng)目 二、Create所需3Dobject 1.Player 2.walls 三、添加屬性 : 1.添加在Player上 a.添加Rigidbody組件 b.添加new script組件,并命名為PlayMove,代碼如下: 2.添加到walls上 a.首先create empty將wall包含 b.在Wall上添加new script組件,代碼

    2023年04月24日
    瀏覽(24)
  • unity制作FPS射擊游戲

    unity制作FPS射擊游戲

    角色動(dòng)作方面包括行走、奔跑、跳躍、武器切換、彈夾更換、武器展示、彈殼拋出效果、射擊效果、全自動(dòng)與半自動(dòng)射擊效果、瞄準(zhǔn)效果、后坐力效果、彈痕效果等多種動(dòng)作。 非玩家角色(NPC)具備多個(gè)動(dòng)畫狀態(tài),包括固定路徑巡邏、行走、奔跑、尋路攻擊等多種行為。 太

    2024年02月08日
    瀏覽(29)
  • Unity學(xué)習(xí)之坦克游戲制作(1)開(kāi)始場(chǎng)景的制作

    Unity學(xué)習(xí)之坦克游戲制作(1)開(kāi)始場(chǎng)景的制作

    相當(dāng)于開(kāi)始界面,想怎么創(chuàng)建就怎么創(chuàng)建 我最終模擬的效果 這部分不關(guān)鍵,關(guān)鍵的是創(chuàng)建可用來(lái)裝載腳本的button 這部分感興趣的可以去看我博客的GUI部分,但建議大家把學(xué)GUI的時(shí)間拿來(lái)學(xué)UGUI 導(dǎo)入預(yù)設(shè)體 Root 創(chuàng)建一格Label組件作為標(biāo)題 這部分也可以自己創(chuàng)建 同時(shí)創(chuàng)建四個(gè)按

    2024年01月22日
    瀏覽(17)
  • 【簡(jiǎn)單3d網(wǎng)絡(luò)游戲制作】——基于Unity

    【簡(jiǎn)單3d網(wǎng)絡(luò)游戲制作】——基于Unity

    目錄 Demo展示 前期知識(shí)點(diǎn)準(zhǔn)備 1.delegate委托 2.通信協(xié)議 3.List容器 4.dictionary容器 5.MethodInfo類 進(jìn)入創(chuàng)作 c/s通用通信協(xié)議: 客戶端? 1.場(chǎng)景搭建 2.BaseHuman刨析(Sync+Ctrl) ????????Ctrl腳本 ????????Sync完整代碼? ????????BaseHuman完整代碼 3.NetManager刨析 4.Main刨析 ??????

    2024年02月05日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包