5
나는 잊어 버린 어딘가에서이 쉐이더를 얻었습니다. 기본값은 적중되는 효과에 단색 만 사용하는 것입니다. 그래서 그것을 방패 텍스처를 지원하도록 수정하려고합니다.Force field shader unwrap texture가 작동하지 않습니다.
Shader "TFTM/FX/Shield2" {
Properties {
_Position ("Collision", Vector) = (-1, -1, -1, -1)
_MaxDistance ("Effect Size", float) = 40
_ShieldColor ("Color (RGBA)", Color) = (0.7, 1, 1, 0)
_EmissionColor ("Emission color (RGBA)", Color) = (0.7, 1, 1, 0.01)
_EffectTime ("Effect Time (ms)", float) = 0
_MainTex ("Texture (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "Queue" = "Transparent" "RenderType" = "Transparent" }
LOD 2000
Cull Off
CGPROGRAM
#pragma surface surf Lambert vertex:vert alpha
#pragma target 3.0
struct Input {
float customDist;
float2 uv_MainTex;
};
sampler2D _MainTex;
float4 _Position;
float _MaxDistance;
float4 _ShieldColor;
float4 _EmissionColor;
float _EffectTime;
float _Amount;
void vert (inout appdata_full v, out Input o) {
o.customDist = distance(_Position.xyz, v.vertex.xyz);
o.uv_MainTex = v.texcoord;
}
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;//_ShieldColor.rgb;
o.Emission = _EmissionColor;
if(_EffectTime > 0)
{
if(IN.customDist < _MaxDistance){
o.Alpha = _EffectTime/500 - (IN.customDist/_MaxDistance) + _ShieldColor.a;
if(o.Alpha < _ShieldColor.a){
o.Alpha = _ShieldColor.a;
}
}
else {
o.Alpha = _ShieldColor.a;
}
}
else{
o.Alpha = o.Alpha = _ShieldColor.a;
}
}
ENDCG
}
Fallback "Transparent/Diffuse"
}
내가 여기 질감과 색상을 교체
o.Albedo = tex2D (_MainTex, IN.uv_MainTex) .rgb; // _ ShieldColor.rgb;
하지만 제대로 작동하지 않으며 주변 텍스처 대신 단일 색상으로 나타납니다.
당신이 영역이 올바른 UV 좌표를 가지고, 보장나요? 예를 들어'o.Albedo = float3 (IN.uv_MainTex.rg, 0.0)'을 사용하여 볼 수 있습니다. – Gnietschow