如果要想做到如下图的爆裂、炸裂、碎裂效果特效:
自己手写可不容易,因为需要利用《【Unity3D】Mesh》(点击打开链接)将一个物体分解成多个碎片,然后再写一系列的方法。此时可以利用到Unity3D的一个插件Fracturing & Destruction,官网上60美金,但用和谐的我,也给大家上传了一份:http://download.csdn.net/detail/yongh701/9845202。
上述例子具体实现方法如下。
一、场景布置
1、基本的几何体设置如下图所示,没啥好说的。
2、之后导入Fracturing & Destruction 1.11.unitypackage组件。
3、之后可以如图【Create Other】->【Ultimate Game Tools】->【Fractured Object】添加一个Fractured Object。
4、对于Fractured Object设置如下图所示,Source Object就是要被碎裂的物体,Start Static勾上是指一开始不碎裂。Chunk Physic Material选择Rock也只有这种可以给你选。Fracture Method有两种,一种是BSP,是严格地按照方框装切割物体,表现的碎裂的方式是物体内部的张力较大,就是你手撕鱿鱼片的感觉,对于普通物体不太真实,但耗资源少。这里选择Voronoi这种方式,同时在Cells in Local XYZ增大倍数,意思在XYZ方向上产生更多的碎片。Interior Material应与这个墙的材质保持一致。
设置完毕,点击Compute Chunks计算碎片。这里的Cells In Local X Y Z设置9x9x9=729块碎片,如果机器配置不行或者Unity3D版本低可能会报错或者死机,修改为4x4x4=64块碎片,重新点击Compute Chunks计算碎片。询问是否将原来的模型隐藏,选择是,然后就会形成一个又无数子模型组成的原模型来替代。如图所示。
5、之后给球【Componet】->【Physics】->【Rigidbody】加上一个刚体属性。并且同时调大球的质量为10,让它足够重去撞碎这堆墙。之后就可以开始脚本的编写。
二、脚本布置
给球加上如下的一个简单脚本Push.cs,就能看到效果。
- using UnityEngine;
- using System.Collections;
- public class Push : MonoBehaviour
- {
- void Start()
- {
- rigidbody.velocity = new Vector3(0, 0, 50);
- }
- }
而且这里的速度不能设置得过高,因为如果速度过高,Unity3d会有Bug,认为这个球在瞬间会有极高的位移,出现球穿墙的bug。Unity3d的物理引擎认为就是像你迅速挪动桌布一样,不会对桌面上的物体有任何影响,球也是无法击碎墙的。