登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

重新出发的阿赵

阿赵的博客

 
 
 

日志

 
 

4层纹理的动态地形生成  

2014-06-03 14:07:05|  分类: Unity教程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

以前不少人对我提出过这样的需求疑问,如何在游戏进行之中改变地形之类。这种需求最多是出现在虚拟现实中,比如一个什么挖掘机挖出一个坑,地形跟着变化之类。其实在游戏里面有时也会出现这样的需求,比如突然掉下一块陨石,地表砸出一个大坑,然后那一个区域变成不能行走之类。
我也来做做这样的效果。顺带一说,估计很多人会问我效率的问题,我这个在小米2S上面测试是随便都能60帧满帧的,其他机器没试过。
使用脚本,生成了一个平的地面,地面的宽高和段数是可以动态输入的。
4层纹理的动态地形生成 - 阿赵 - 穷到掉渣的超级奶爸阿赵
 
然后随便用鼠标在地面上面点几下,出现了几个坑:
4层纹理的动态地形生成 - 阿赵 - 穷到掉渣的超级奶爸阿赵
 
进入scene视图看看,网格确实发生了变化,而且随着挖出的坑的深度不同,出现了不同的纹理:
4层纹理的动态地形生成 - 阿赵 - 穷到掉渣的超级奶爸阿赵
 
我们接着随意的用鼠标在地面上划动,出现了一条条的沟,这是可以更清晰的看到纹理随着深度的变化:
4层纹理的动态地形生成 - 阿赵 - 穷到掉渣的超级奶爸阿赵
 
这时候scene视图是这样的:
4层纹理的动态地形生成 - 阿赵 - 穷到掉渣的超级奶爸阿赵
 
好,接下来说说制作的原理:
首先,肯定是得写一个shader,分别对应多层的纹理,和一张遮罩的图片(这个方法之前的日志介绍过,也分享过源码)。
4层纹理的动态地形生成 - 阿赵 - 穷到掉渣的超级奶爸阿赵
然后,使用动态生成mesh的方法(具体方法我以前也说过),通过高度图来生成网格的高度。
这里我的纹理遮罩和高度图是同一张图片,这样挖的深度和纹理的变化就能对应起来了。而由于这张图片必须是可以读写的,所以我这里是使用了New一张texture2D出来的。至于这张遮罩的宽高,可以在脚本设定。

接下来的事情就简单了,就像做一个绘图板一样,使用射线去获取鼠标点击地形的位置,然后改变遮罩图片的颜色,然后,效果就出来了。

我们还可以随意的改变材质里面的贴图的顺序(截图中的图片通道名称是错误的,由于复制代码,都是Second了……),可以很方便的改变地形纹理的外观,比如把第一张和第四张纹理调转
4层纹理的动态地形生成 - 阿赵 - 穷到掉渣的超级奶爸阿赵
 

 就会出现了上面是山下面是草地的效果了。
4层纹理的动态地形生成 - 阿赵 - 穷到掉渣的超级奶爸阿赵
 
  评论这张
 
阅读(2574)| 评论(24)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018