I guess the easiest way to get there is to download the Unity built-in shaders, copy “DefaultResourcesExtra/Sprites-Diffuse.shader” to your project and implement a custom lighting model.
The surface shader examples page features a Diffuse shader example that you can use as foundation. Take a look at the 2nd Diffuse example, it shows how to implement the custom lighting model. Notice the LightingSimpleLambert function, which you want to copy to your shader.
#pragma surface surf SimpleLambert
half4 LightingSimpleLambert (SurfaceOutput s, half3 lightDir, half atten) {
half NdotL = dot (s.Normal, lightDir);
half4 c;
c.rgb = s.Albedo * _LightColor0.rgb * (NdotL * atten * 2);
c.a = s.Alpha;
return c;
}
The following line in the example makes that the surfaces’ illumination depend on the angle between the surface normal direction and light direction:
half NdotL = dot (s.Normal, lightDir);
Click here for a dot-product refresher.
If you want to remove that behavior and illuminate the surface with full intensity always, you can get rid of the NdotL term and use 1 instead:
half NdotL = 1;
This is equal to when the surface normal and light direction are parallel and point into opposite directions.
There might be other approaches how to achieve this effect, but I believe, even though it’s a bit of a text here, the modifications to get the custom lighting model in are not too difficult.
Hope it helps!
PS:
I’m not sure if the following line in the example is correct when using Unity 5:
c.rgb = s.Albedo * _LightColor0.rgb * (NdotL * atten * 2);
I think in Unity 5, you do not multiply by 2. If your sprite is too bright, change that line to:
c.rgb = s.Albedo * _LightColor0.rgb * (NdotL * atten);