百战天虫中子弹的挖坑效果

http://www.annjing.cn/article.asp?id=37

核心思路:

DEMO中的位图数据主要有3个:1、背景;2、地面(可被挖坑);3、挖坑用的包含透明圆球的位图(一个矩形位图,中间的圆圈为透明的)

//最最核心的一条语句   _earth.bitmapData.copyPixels(_earth.bitmapData, rect, point, abmd);

其中_earth.bitmapData就是刚才提到的位图2,rect和point不解释,

重点是这个abmd,就是刚才提到的位图3,这里我的生成方法是:

/** 

 * 得到一个球体的对象   * @param pow 随机圆的半径   * @return   *   */   private function getCircleBMD(pow:int):BitmapData   {       var bmd:BitmapData = new BitmapData(pow * 2, pow * 2, true, 0xFF000000);       var spr:Sprite = new Sprite();       spr.graphics.beginFill(0xFFFFFF, 1);       spr.graphics.drawCircle(pow, pow, pow);       spr.graphics.endFill();       bmd.draw(spr);       bmd.floodFill(bmd.width / 2, bmd.height / 2, 0x00000000);       return bmd;   }  

完整的项目代码在这里:

http://download.youkuaiyun.com/source/3018108 

几个星期前,我在想,能否使用Unity来进行地形的实时变化?比如说,如果发生爆炸,它能否在地形中显示一个气泡?我认为学习更多高级的Unity中的地形特征将会是一个好的项目。 这要比我预想的更具挑战性,因为很难在执行这些操作时获得帧率来保持稳定。使用一些技巧,最终实现了我预想的效果。 示例是这样工作的。脚本随机产生“shell”并很快掉落到地面。每一个shell都依附着一个onTrigger对撞机。如果它和拥有 TerrainDeformer组件的地形相冲突的话,shell将告诉组件它的位置和爆炸的作用力。shell然后实例化一个爆炸(explosion)(由Ben Throop great Detonator framework提供),然后移除它自身。 TerrainDeformer脚本然后将那个位置翻译成相对地形的正确位置,并修改heightmap(地形高度)和alphamap(地形纹理)。一点儿数学知识用来在影响圆周内部查找所有的heightmap和alphamap位置。 被用于在影响范围重绘质地的纹理,是从基于传递到脚本(Terrain Deformation Texture Num)中的数字顺序索引值的地形纹理列表中选择的。在这个例子中,它被设置为1,因此它将使用列表中的第二个纹理来重绘质地。 在创建你自己的地形时,有必要将地形的高度设置为大于0米,从而形成弹坑。我建议深度至少为3米。这可以通过将地形高度设为大于3米的任何值,然后点击Terrain->Flatten Heightmap并输入3米。 出于执行的原因,保持你的Terrain Size为small是非常重要的,以及更重要的是保持Heightmap Resolution为low。在这个例子中,设置为33。 目前版本没有想缺乏地形边缘检测的局限性,并提供多个地形。这个例子表明它不仅能够工作,而且不会有大的性能损失。 感谢Calin创建一个泥土纹理。 为检测示例,<http://blog.almostlogical.com/workingExamples/RealTimeTerrainDeformation/index.html> 为获得源码(unitypackage), 源码要求:Unity 2.6 以及 Detonator Framework。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值