----更新2014-6-20 8:42 把脱落重新实现了,使用了新的算法来计算脱落顺序,比以前要自然得多。另外脱落动作做成了CCAction,更符合cocos2dx的风格一些。 截图: ----更新2014-6-20 重做了裂痕: ----更新2014-6-19 由于打算开源特效集合,所以把以前的一些东西要重新整理一遍。今天整理到这个效果,发现以前的实现方法太慢了。 于是换一种算法重新写。 已实现出剖分,速度很快,也是点击处密集四周稀疏的。效果如下: 下图是debug的时候无意画出来的,没实际用处,感觉有点意思: ----更新2013-12-1 这个东西拖了好久,一直有别的事腾不出时间,今天终于搞完了。 前面实现了三角剖分和随机点生成。不过后来发现用前面那种方法生成出来的随机点对于玻璃破碎来说效果并不好,虽然那个方法能生成“中间密集,越远越稀疏“随机点,但随机性太强了,使得剖分出来的三角形啥样都有,尤其是存在一些非常尖细的三角形,效果看起来很不好。而且后来试了一下,通过合并等方法消除它们非常麻烦甚至不可行。 于是换了个策略:不生成随机点了,生成规则的点,然后再进行适当扰动使它们产生一些“不规则”感。 尝试了两种方法: 1,最简单的是按行列规则地生成点,然后进行扰动。生成出来的效果还可以,只是不过各处的破碎程度整体上是均匀的,体现不出受力中心。 2,在1的基础上进行改进,考虑如何让越接近触摸处点越密集,于是想到了四叉树(用四叉树实现3d地形的时候就是越接近视点顶点越密集,越远越稀疏)。于是,先以触摸点为中心生成四叉树,然后将四叉树叶子节点的顶点收集起来(重复的点进行合并),然后再对各顶点进行扰动,扰动时要注意此顶点当初是哪几个叶子节点的公共顶点,比如此顶点v是叶子节点leafA,leafB,leafC,leafD的公共顶点,设leafMin是这四个节点中尺寸最小的节点,e为leafMin的边长,则顶点v的扰动量不能大于e/2,这样就可以保证扰动后各点都不会突破自己的“晶格“。实际我取的是e/4。 另外有几个注意事项: 1,在visit中用glScissor做剪裁,使用的rect必须是设备空间(iphone 3.5-inch,iphone 4-inch等等)的rect(而不要用局部空间或世界空间的rect)。 |
|
来自: 勤奋不止 > 《游戏引擎cocos2d》