如果要把unity3D的工程,转到flash平台,是有一些限制的,其中,unity3d的地形不能使用,这就是一个很大的问题。
所以,使用mesh来替代unity自带的地形,就变成首选的解决方案。
问题接着而来,mesh怎么像unity自带的地形一样刷地表贴图,怎么种树,草。这就需要一套完整的系统与工具来支持。
于是有了这个新的工具。
1 先说刷地表贴图的实现,这个其实就很简单,首先是mesh材质的shader的支持,shader要支持4层纹理混合,外加一个mix texture,也就是5层贴图的shader。这个很简单了,就是4层贴图根据mix texture的R G B A通道来混合最后的颜色。
half4 splat_control = tex2D (_Control, IN.uv_Control);
half3 col;
col = splat_control.r * tex2D (_Splat0, IN.uv_Splat0).rgb;
col += splat_control.g * tex2D (_Splat1, IN.uv_Splat1).rgb;
col += splat_control.b * tex2D (_Splat2, IN.uv_Splat2).rgb;
col += splat_control.a * tex2D (_Splat3, IN.uv_Splat3).rgb;
有了shader之后,刷mesh的贴图,无非就是修改mix texture的各个通道的颜色而已。用从屏幕中心点发出射线做碰撞,碰撞得到的mesh的点的uv坐标,来确定被修改的mix te

本文介绍了如何在Unity 3D中使用mesh替代自带地形,解决跨平台到Flash时的问题。通过自定义shader支持多层贴图混合,并详细阐述了刷地表贴图的实现过程,包括使用射线碰撞检测修改混合纹理。同时,文章还讲解了在mesh上种植树木的方法,以及利用顶点shader实现动态草的动画效果,通过合并相同草的mesh来优化性能。
最低0.47元/天 解锁文章
4824

被折叠的 条评论
为什么被折叠?



