【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果

时间:2024-04-03 21:00:24

如果要想做到如下图的爆裂、炸裂、碎裂效果特效:

【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果

自己手写可不容易,因为需要利用《【Unity3D】Mesh》(点击打开链接)将一个物体分解成多个碎片,然后再写一系列的方法。此时可以利用到Unity3D的一个插件Fracturing & Destruction,官网上60美金,但用和谐的我,也给大家上传了一份:http://download.csdn.net/detail/yongh701/9845202

上述例子具体实现方法如下。

一、场景布置

1、基本的几何体设置如下图所示,没啥好说的。

【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果

2、之后导入Fracturing & Destruction 1.11.unitypackage组件。

【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果

3、之后可以如图【Create Other】->【Ultimate Game Tools】->【Fractured Object】添加一个Fractured Object。

【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果

4、对于Fractured Object设置如下图所示,Source Object就是要被碎裂的物体,Start Static勾上是指一开始不碎裂。Chunk Physic Material选择Rock也只有这种可以给你选。Fracture Method有两种,一种是BSP,是严格地按照方框装切割物体,表现的碎裂的方式是物体内部的张力较大,就是你手撕鱿鱼片的感觉,对于普通物体不太真实,但耗资源少。这里选择Voronoi这种方式,同时在Cells in Local XYZ增大倍数,意思在XYZ方向上产生更多的碎片。Interior Material应与这个墙的材质保持一致。

【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果

设置完毕,点击Compute Chunks计算碎片。这里的Cells In Local X Y Z设置9x9x9=729块碎片,如果机器配置不行或者Unity3D版本低可能会报错或者死机,修改为4x4x4=64块碎片,重新点击Compute Chunks计算碎片。询问是否将原来的模型隐藏,选择是,然后就会形成一个又无数子模型组成的原模型来替代。如图所示。

【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果

5、之后给球【Componet】->【Physics】->【Rigidbody】加上一个刚体属性。并且同时调大球的质量为10,让它足够重去撞碎这堆墙。之后就可以开始脚本的编写。

【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果

二、脚本布置

给球加上如下的一个简单脚本Push.cs,就能看到效果。

[csharp] view plain copy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class Push : MonoBehaviour  
  5. {  
  6.   
  7.     void Start()  
  8.     {  
  9.         rigidbody.velocity = new Vector3(0, 0, 50);  
  10.     }  
  11.   
  12. }  
很简单,就一行的力,这里只是让球有一个向墙的、极高的初始速度,足以像子弹一样将墙撞碎。不要用《【Unity3D】用鼠标点击事件、AddForce完成跳跃与二段跳》(点击打开链接)加力的方式,因为根据牛顿第一定律,物体是有惯性的,给物体就算加再大的力,也很难在初始得到如此高的动能,你只是能得到一个很高的加速度罢了,得不到这种效果。

而且这里的速度不能设置得过高,因为如果速度过高,Unity3d会有Bug,认为这个球在瞬间会有极高的位移,出现球穿墙的bug。Unity3d的物理引擎认为就是像你迅速挪动桌布一样,不会对桌面上的物体有任何影响,球也是无法击碎墙的。