这篇教程将教大家如何在Unity中制作一个简单的碎片效果。当物体撞击或销毁时,我们将物体分裂为更小的碎片来取代之前的仅仅直接“删除”物体。
需求
这篇教程需要最新版本的Unity,已经一些基础的Unity经验。为了稍后教程中更高级的效果,还需要一个3D模型工具。如果没有可用的模型,或者不想自己创建模型,我们在这里为大家提供了可下载资源。
在特效的基础版本中,当启动时一个立方体将会被销毁,只留下一些碎片真实的掉到地面上:
 
 
之后,我们将立方体换为更复杂的管状模型:
 
 
你可以自己试一下:
 
基础设置
创建一个新的Unity工程并打开一个新的场景。创建一个平面来作为地面,创建一个立方体来作为可被破坏的物体。然后放置一个方向光让物体更加明显,创建两个新材质并将它们分配给地面和立方体,这样我们就能区分来它们了。然后移动摄像机以便看到所有物体:
 
销毁立方体
有很多种方法来“销毁”立方体。现在,我们将采用最简单的的方法。
创建一个新的JavaScript脚本并命名为destructionController.js。我们将所有移除立方体和创建碎片的方法都放在这里。在里边添加以下代码:

function Update()
{
     if(Input.GetKey(Keycode.space))
     {
         Destroy(gameObject);
     }
}

现在,将脚本添加给立方体。开始游戏进行一次测试运行,立方体将会被 销毁。
 
被移除后,就像在截图中看到的一样,立方体在层级面板中也不存在了。
创建碎片
现在创建八个小的立方体;这些将作为当前大立方体的“碎片”。给这些小立方体添加和大立方体一样的材质。(先不要担心他们的样子,稍后会让它们看起来超级赞)他们看起来是这样的:
 
将八个立方体堆砌成一个单个的大立方体,注意它们之间不能有交叉:
 
给每个立方体一个刚体组件,将它们的质量(mass)设置为22,激活使用重力(use gravity)并禁用动力学(is kinematic)。这会使碎片使用物理特性落下。如果你想的话可以稍后自己改变这些值来做出更加适合你游戏的效果。
 
现在将小立方体打组到一个新的空游戏对象上,并将它命名为remainCube。当原来的立方体销毁时,将会被这个由小立方体组成的物体取代。
 
将remainCube物体拖到工程文件夹中来创建一个预制。创建好之后,从场景中将它删掉,这样它就可以被使用了。
使残片出现
将之前代码完善为如下:

var remains: GameObject;
function Update()
{
    if(Input.GetKey(Keycode.space))
    {
        Instantiate(remains, transform.position, transform.rotation);
        Destroy(gameObject);
    }
}

这将会在原来立方体的位置创建一个残片。之后,原来的立方体会被移除,这会给人一种新生成的立方体还是原来立方体的错觉,但是这个立方体“坏掉了”。
为了能让它工作起来,我们不得不手动为立方体分配残片。点击它,在检视面板会看到DestructionController脚本。有一个被叫做Remains的位置,并且现在应该是空的。从工程文件夹中将remainsCube预制拖到这个位置。
现在检视面板中的Destruction Controller脚本看起来应该是这样的:
 
首次优化
来一次测试运行吧!如果所有东西设置都正确,当按下空格时,残片就会取代立方体。幸运的话它们应该会滚落到地面上。
这就是基础的立方体:
 
应该转换成类似于这种:
 
真不幸
不幸的是,它没有保证碎片以一个好的方式滚落。幸运的是,有办法来解决这个问题。
创建一个新的空物体并给它一个球体碰撞器,但是不要添加刚体。将残片拖到场景中,这样就可以编辑他们了。将球体碰撞器添加给残片,这样它就和一些立方体有了交叉:
 
现在,碎片会马上碰到球体,出现一个滚落效果:
 
 
移除碎片
根据现在创建的游戏,我们不能在场景中一次提供太多的“碎片”。最直接的方法是在几秒钟之后删除它们。为了这样做,创建一个新的JavaScript文件并命名为selfDestruct.js。加入以下代码:

function Start()
{
    yield WaitForSeconds(4.0);
    Destroy(gameObject);
}

当物体被创建后,它将会等四秒钟,然后销毁自身。将这个脚本添加给remainCube物体。如果现在销毁立方体并创建残片,那么残片将会在四秒钟后销毁它们自己。
这就对了!现在就有了一个当物体销毁时,可以有效的使物体破碎成更小碎片的基础。现在就可以按照这个样子来使用这个特效了,不过让我们进一步来看看在更复杂的物体中怎么使用它。
使用真实的物体来取代立方体
现在我们已经有了一个基础的系统,我们可以通过将立方体替换为实际物体来使效果更漂亮。
 
如果你擅长使用3D建模工具,那么你就可以创建自己的物体了。如果不擅长,或者手头没有可用的资源,可以在这里下载准备好的3D文件。
将文件复制到资源文件夹中,3D模型会自动被导入以供使用。在用它们之前,点击资源浏览器( AssetExplorer)中的文件以便确保资源文件是按照缩放比例为1正确导入的(不是0.1或0.001;不然制作会变的复杂)。
 
观察物体,在检视面板可以看到一个被称作meshfilter 的区域。点击它,会在工程面板得到可用网格的列表。现在用这个管状模型替换那些立方体。
 
完整的模型使用barrel网格;小的立方体碎片需要用名字为barrel_fragment_01到barrel_fragment_08的网格。这些分配好之后,将它们的位置坐标设置为(0,0,0)。(它们的轴心点已经设置好了,这样它们位置就很容易被归零了)。
用一个网格碰撞器来取代之前的立方体碰撞器。移除碎片上所有的立方体碰撞器,并且全部用网格碰撞器来取代。检查每一个网格碰撞器并确保每一个都添加了正确的网格(即barrel_fragment_01需要barrel_fragment_01网格等等)。

 
上边的步骤做完之后,将所有的碰撞器设置为convex。(一个非凸网格碰撞器不能和其他非凸网格碰撞器发生碰撞。这是unity程序的问题。)还有,要移除添加到残迹上边的球体碰撞器,这个现在已经不需要了。
如果以上步骤全部设置正确,将会得到一个可以碎成8部分的管状模型。

进一步的细节
同样这个系统可以用于添加其他的毁坏效果。你有爆炸效果吗?将它添加到残迹当中!添加一个破裂的声音。在里边添加一个粒子效果,创建一个蓬松的烟雾特效。
总结
这篇教程中向大家展示了最简单直接的制作物体破碎的效果的方式。现在知道了怎么毁坏一个物体,从游戏中移除物体;在破碎之前用更小的碎片替换物体;还有就是后来碎片何如完成自身销毁。
这个系统现在可以被修改或适应很多特殊的需求。当射击的时候可以放置板条箱或管状模型的碎片。当飞机坠毁时可以创建一个爆炸。或者可以创建一个船分裂成两半的事故效果。尽情玩耍吧!

转自:http://www.manew.com/thread-99529-1-1.html

[教程] 在Unity中制作物体破碎效果相关推荐

  1. Unity中制作UI光晕效果(发光效果)

    Unity中,我们怎么制作UI物体发光的渐隐渐现的效果呢? 比如说我们有一张月亮光晕的精灵图片 我们可以给它添加一个CanvasGroup组件 我们可以发现,组件上的Alpha值可以控制图片的透明度, ...

  2. 如何用ae制作文字破碎效果

    有时候,我们看到这样的视频,文字破碎效果,那么这样的视频如何制作呢?今天给大家带来了ae教程:用ae制作文字破碎效果. 那就直接开始吧,具体步骤如下: 1.新建一个合成,选择自己想要的大小并命名. ( ...

  3. ae破碎效果在哪_AE教程 | 五分钟制作文字破碎效果

    原标题:AE教程 | 五分钟制作文字破碎效果 UBOOK知识在线 一个很认真的知识分享平台 愚人节快乐呀,亲爱的同学们- 今天又到了CC老师的AE小课堂啦,今天给大家带来的是一个很棒的特效效果--破碎 ...

  4. Unity物体破碎效果

    物体破碎的效果在游戏中非常常见,在本文中将实现任意大小的长方体的敲击破碎,并为实现更复杂物体的破碎效果做好铺垫.     最终效果图如下:     为了实现这种破碎效果,我们必须生成碎片物体,在本例中 ...

  5. Unity 实现物体破碎效果(转)

    感谢网友分享,原文地址(How to Make an Object Shatter Into Smaller Fragments in Unity),中文翻译地址(Unity实现物体破碎效果) In ...

  6. Unity 实现物体破碎效果(转)

    感谢网友分享,原文地址(How to Make an Object Shatter Into Smaller Fragments in Unity),中文翻译地址(Unity实现物体破碎效果) In ...

  7. 如何在unity中制作塔防游戏

       塔防游戏非常流行,毫无疑问--没有什么比看着自己的防御消灭讨厌的侵略者更让人满足!在这两部分教程中,用unity来制作一个塔防游戏! 将会学习怎样...... 创建一波敌人 让它们跟随线路点 ...

  8. Unity中制作游戏的快照游戏支持玩家拍快照

    Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家"拍快照",也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介 ...

  9. 在Unity中制作高质量的光照效果(上)

    原创: Unity Unity官方平台 本篇专家指南将介绍在Unity中制作高质量光照效果的多种高级方法,其中使用了2D和立方体贴图的光线遮罩,并且利用了Unity高清渲染管线HDRP中的高级着色器. ...

最新文章

  1. windows下安装Python virtualenvwrapper-win
  2. 一个后端开发人员的node.js学习笔记(一)安装与第一个服务器
  3. 在VMWare上安装Win3.2
  4. 如何用ABP框架快速完成项目(面向项目交付编程面向客户编程篇) - 广州.net微软技术俱乐部12月份活动报名帖...
  5. java http 包_java http请求
  6. 生产环境下戴尔 R820 kvm虚拟化部署二(物理主机系统优化)
  7. Cognos组织架构介绍
  8. 解决windows7“您可能没有权限使用网络资源”的方法
  9. excel如何批量查询ip归属地?
  10. JMeter工具:场景设计,场景设置,场景运行,性能参数配置,测试监控
  11. 细化算法matlab
  12. 利用go语言创建钱包并遍历钱包(wallet)
  13. 你知道怎么衡量硬件设备的算力吗?
  14. 奶茶店的线上线下营销策略
  15. onlyOffice常用api整理(1)
  16. java 查看类_JAVA基础知识之JVM-——通过反射查看类信息
  17. Typora 免费Beta版本(Window+Mac+Linux),所见即所得,完美支持markdown的富文本格式,实时渲染可见及编辑的特点
  18. 使用tcpdf合成PDF文件
  19. STM32F030C8T6单片机与GY-61 ADXL335模块——角度传感器
  20. java面试题大全(整理版)

热门文章

  1. Python 变量类型,关于变量的实现和原理
  2. SSM框架专题-从零入门SpringMVC笔记
  3. Epic推出免费3D扫描应用《RealityScan》
  4. 旷视人脸识别SDK 粗略分类剖析
  5. ros支持python_在ROS中使用Python3
  6. 【转】以太坊钱包分析与介绍
  7. 区块链(Blockchain)-应用场景
  8. Kubernetes 【安全】-System Hardening - 1. apparmor
  9. 周末出动:广州起义烈士陵园
  10. 还是大家发生东莞十多个