Unity物体破碎效果
物体破碎的效果在游戏中非常常见,在本文中将实现任意大小的长方体的敲击破碎,并为实现更复杂物体的破碎效果做好铺垫。
最终效果图如下:
为了实现这种破碎效果,我们必须生成碎片物体,在本例中将根据敲击点生成四个碎片物体。在Unity中,物体的形状是由MeshFilter组件中的Mesh对象决定的。也就是说,只要我们创建恰当的Mesh对象,我们就能够生成任意形状的物体。
从Mesh类的属性中,可以看出跟物体形状有关的属性为:
//Vector3数组,储存顶点的相对位置
public Vector3[] vertices { get; set; }
//int数组,每三个数字一个三角面的顶点信息,每一个数字都是vertices的索引
public int[] triangles { get; set; }
输出一个cube的vertices如下(部分):
输出一个cube的triangles如下(部分):
很显然,如果从零构造一个物体,是比较复杂的。不过只是生成碎片的话,我们其实只需要更改部分顶点位置。
利用这种思路,生成一个碎片:
//生成Mesh对象
private Mesh GenMesh(Mesh mesh, Vector3 hitPoint)
{List<Vector3> mesh_vertices = new List<Vector3>();List<Vector3> piece_vertices = new List<Vector3>();int[] mesh_triangles = mesh.GetTriangles(0);List<Vector3> piece_normals = new List<Vector3>();mesh.GetVertices(mesh_vertices);mesh.GetNormals(piece_normals);foreach (Vector3 item in mesh_vertices){piece_vertices.Add(item);}int i = 0;foreach (Vector3 v in mesh_vertices){if (v == new Vector3(0.5f, 0.5f, 0.5f) || v == new Vector3(0.5f, 0.5f, -0.5f)){piece_vertices[i] = new Vector3(hitPoint.x, hitPoint.y, v.z);}else{if (v.x == 0.5f){piece_vertices[i] = new Vector3(0, v.y, v.z);}if (v.y == 0.5f){piece_vertices[i] = new Vector3(v.x, 0, v.z);}}i++;}Mesh piece = new Mesh();piece.SetVertices(piece_vertices);piece.SetTriangles(mesh_triangles,0);
//法线信息与光照相关piece.SetNormals(piece_normals);return piece;
}
//生成物体private GameObject GenPiece(Mesh piece_mesh,MeshRenderer meshRender){GameObject piece = new GameObject("piece");piece.transform.position = transform.position;piece.transform.localScale = transform.localScale;MeshRenderer piece_render = piece.AddComponent<MeshRenderer>();piece_render.material = meshRenderer.material;piece.AddComponent<MeshFilter>().mesh = piece_mesh;Rigidbody rig = piece.AddComponent<Rigidbody>();piece.AddComponent<MeshCollider>().convex = true;return piece;}
//撞击点计算
//hit.transform.localScale为破碎目标缩放信息
Vector2 hitPoint = raycastHit.transform.position - raycastHit.point;
-new Vector2(hitPoint.x / hit.transform.localScale.x, hitPoint.y / hit.transform.localScale.y)
效果如图:
以上修改了cube的右上角顶点,以及与右上角x或y相同的顶点,以此生成了1/4的碎片。
只要分别修改4个顶点,就能生成四个碎片,再添加力,就可以实现炫酷了破碎效果了。
工程下载链接请关注公众号SFGame后(*^_^*)回复:物体破碎
更多个人原创博客,可关注公众号SFGame
Unity物体破碎效果相关推荐
- Unity 实现物体破碎效果(转)
感谢网友分享,原文地址(How to Make an Object Shatter Into Smaller Fragments in Unity),中文翻译地址(Unity实现物体破碎效果) In ...
- Unity 实现物体破碎效果(转)
感谢网友分享,原文地址(How to Make an Object Shatter Into Smaller Fragments in Unity),中文翻译地址(Unity实现物体破碎效果) In ...
- unity 实现物体破碎效果的一些方法 - 细雨淅淅
游戏越来越接近现实的感觉,如果有一个真是的 虚拟现实设备,可能我们真的会感觉是在真实世界.场景的逼真是在渲染效果.角色AI.游戏逻辑.物理效果等等一起导致的结果.现在游戏越来越大,除了渲染,物理估计是 ...
- [教程] 在Unity中制作物体破碎效果
这篇教程将教大家如何在Unity中制作一个简单的碎片效果.当物体撞击或销毁时,我们将物体分裂为更小的碎片来取代之前的仅仅直接"删除"物体. 需求 这篇教程需要最新版本的Unity, ...
- Unity Shader·屏幕破碎效果
Unity Shader·屏幕破碎效果 前言 最近在做一个新的MMD(用Unity来实现),其中用到了一些好看的渲染技术在这里分享一下. 视频链接 https://www.bilibili.com/v ...
- Unity 实现自定义图片破碎效果-2D_Destruction
Unity 实现自定义图片破碎效果-2D_Destruction 导引 效果预览 源码下载地址 实现流程 1.添加SrpiteRenderer组件 2.添加Explodable组件 3.Polygon ...
- unity 条目换位效果_Unity AI主题博客条目
unity 条目换位效果 Welcome to the first of Unity's new AI-themed blog entries! We have set up this space a ...
- Unity 实现贴花效果的制作教程
c#教程https://www.cnblogs.com/Yesi/p/15829200.html 有些游戏中的战斗痕迹的效果会通过贴花来实现的,贴花的方式多种多样.而在Unity中,有一种给官方 ...
- 用Unity实现景深效果
用Unity实现景深效果 景深也是一种非常常见的后处理手段,它用来模拟相机拍摄画面的效果.今天我们讨论如何在Unity中实现它. 简单来说,景深效果可以拆分为两个部分,一个部分是聚焦,使画面中指定的区 ...
最新文章
- 2018-3-15模式识别--学习笔记(一)
- mybatis + oracle insert clob,出现ORA-01461:仅能绑定要插入LONG列的LONG值
- 对话RTP作者Ron Frederick: 我非常期待QUIC的发展
- 基于RAF的一个小动画框
- ubuntu下安装RabbitVCS(失败记录)
- 【华为云技术分享】如何设计高质量软件-领域驱动设计DDD(Domain-Driven Design)学习心得
- J2EE常用Listener(转载)
- god is a girl
- linux孤儿进程组深入理解,unix基础---有关于孤儿进程组和终端会话的理解-------值得一看!!!...
- Java界面开发(以五子棋为例)
- Excel中RATE函数的Java实现欢迎加入我的星球
- 新的笔记本电脑没有计算机,最新出炉!2020年10款最轻的笔记本电脑:轻就对了,是您想的吗?...
- openresty ngx_lua请求响应
- SVG的国旗图标集合flag-icon-css在vue中的使用
- 修改C:\Users 下面文件夹的名称
- PCB能承受住100 A的电流吗?
- 爱立信MGW的IP地址应用
- 几何公差之形状误差及其评定
- 软件测试基础(三)测试环境与框架
- 使用vb调用api注册表
热门文章
- STM32 F4 OV2640摄像头学习笔记(二)
- ARTS-9(回溯法的组合总和系列,泛型总结、人生的意义在于体验)
- my thinking
- 结婚后谁管钱更高效?怎样越管越多?
- NOIP2017D1T3-逛公园
- mpc台式计算机的功能是什么意思,mpc是什么意思_mpc怎么读_mpc翻译_用法_发音_词组_同反义词_multipurpose computer 多用途计算机-新东方在线英语词典...
- FTP和使用Docker搭建FTP服务
- 软件R的安装和使用(视窗电脑)
- 计算机网络工程师的自我评价,计算机网络专业简历的自我评价.docx
- java 微信 H5支付