【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对其进行碎片分析的时候,就将它设置为刚体,所以其由于重力的作用会自动下降,做到一个点击摇晃的效果。
在《【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就是原来的小球:
相关文章推荐
- 【Fracturing &amp; Destruction】Unity3D的物体爆裂、炸裂、碎裂效果
- 【Fracturing & Destruction】Unity3D的物体爆裂、炸裂、碎裂效果
- Unity3d 物体碰撞检测前提条件(OnTrigger触发条件)
- Unity3D_打碎模型(自定义碎的程度)插件--Fracturing & Destruction 1.11
- [Unity3D]如何给物体添加阴影效果
- Unity3D --实现一个物体若隐若现的效果
- 计算角色和物体之间距离来触发动画【Unity3d】
- Unity3D学习(3)——物体的运动&简易太阳系
- Unity3D 实现类似“纪念碑谷”扭曲物体的效果
- Unity3D--物体间引力模拟效果
- [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果强化版
- [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果
- unity3d实现相机对场景物体的旋转、缩放、平移查看功能、近似于scene下查看场景的效果
- 触发DBWn写的条件-from 9i sg
- MySQL触发器和Windows计划任务结合使用达到定时触发的效果
- unity3d,利用plane面片显示摄像机看到的物体,类似于投影仪的效果。
- [置顶] Unity3d 实现物体一闪一闪的效果
- 【Unity3D】如何用实现MC中整齐创建物体的效果?
- Unity3d 关于碰撞事件触发,触发器事件触发和 RigidBody以及IsKinematic RigidBody,Collider以及IsTrigger Collider 的条件总结
- Unity3D计算角色与物体之间的距离来触发动画【脚本】