您的位置:首页 > 移动开发 > Unity3D

【Fracturing & Destruction】点破小球——Unity3D中达到条件才触发的物体爆裂、炸裂、碎裂效果

2017-06-11 21:01 405 查看
在《【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果》(点击打开链接)提到了Unity3D的物体爆裂、炸裂、碎裂效果到底是用哪些组件去制作的,但是只是提到如果制作一个碰撞时的击碎效果,当然这也是这个组件最基本的使用,不过,在实际上,更多情况是需要直接利用代码控制一个物件是否破碎,可以称之为“条件碎裂”。那么在Unity3D中,如何做到达到条件才触发的物体爆裂、炸裂、碎裂效果呢?其实还是同样利用到这个插件。下面举一个例子说明这个效果,为了使例子更加有趣,我做了一个点碎小球的例子:



在《【Unity3D】判断是否鼠标点击物体与血条制作》(点击打开链接)我曾经完成了一个点击扣血的效果,这里是进一步,在点到血槽变空之后,小球碎裂。这里也说明,在Fracturing & Destruction中,不借助任何物体的撞击,如何用代码让小球自然破碎。

制作过程如下:

1、与《【Unity3D】判断是否鼠标点击物体与血条制作》(点击打开链接)一样摆好血条之后,导入Fracturing & Destruction插件之后,和在《【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果》(点击打开链接)同样,生成一个Fractured
Object,其位置摆放、内部材质应该和小球一模一样,但这里让他上来就碎,同时生成碎片的时候,弹出的对话框,问你是否收起原物体,这里选择否。



最终场景布置如下图所示,当然这不是本文的重点,之前两篇相关文章都详细说过了。



2、下面编写如下脚本,赋予给主摄像机Main Camera或者一个自己新建的GameObject,这里我是扔给了Main Camera一个GameScript.cs。

这个脚本让达到条件才触发的物体爆裂、炸裂、碎裂效果成为可能,其主要思想是:将原物体和碎片物体重叠放置,但我们一开始就用SetActive(false)让上来就会自动碎裂的碎片物体隐藏,将其收起来,则他遇到SetActive(true)才会播放碎裂效果,不过,在他要SetActive(true)的时候,也就是原物体SetActive(false)隐藏之时。同时,在小球被点击的时候,对其授予一个向Y轴正方向,也就是向上的小速度,在Fracturing & Destruction对其进行碎片分析的时候,就将它设置为刚体,所以其由于重力的作用会自动下降,做到一个点击摇晃的效果。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;//Slider属于UI,用到这个头文件

public class GameScript : MonoBehaviour
{
public GameObject Fracture;//生成的碎片
public GameObject Sphere;//原来的球
public Slider HPStrip;//添加血条Slider的引用
private int HP = 10;//开始为10滴血

void Start()
{
Fracture.SetActive(false);//开始先收起并隐藏破碎物
HPStrip.value = HPStrip.maxValue = HP;//初始化血条
}

void Update()
{

if (Input.GetMouseButtonDown(0))//鼠标左键点下
{
//住摄像机向鼠标位置发射射线
Ray mRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit mHit;
//射线检验
if (Physics.Raycast(mRay, out mHit))
{
if (mHit.collider.gameObject == Sphere)//如果点击的是球
{
HP--;//点到这个球,血就-1
HPStrip.value = HP; //对血条执行操作
Sphere.rigidbody.velocity = new Vector3(0, 1, 0);
}
}
}

if (HP <= 0)//如果血槽空
{
Sphere.SetActive(false);//原来的球消失掉
Fracture.SetActive(true);//破碎物体呈现,让他开始他的表演!
}
}
}
当然,我们还要主摄像机指明各个物体,才能使程序正确运行,HPSlider就是血条Slider,Fracture就是插件生成的破碎物Fractured Object,而Sphere就是原来的小球:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: