【unity插件】推荐一款开源的Unity网格破碎插件,实现在Unity中展示可破坏的墙壁的——unity-fracture

最终效果

在这里插入图片描述

地址

https://github.com/ElasticSea/unity-fracture

介绍

FractureThis.cs 脚本获取其游戏对象中的所有网格并合并它们。这个全局网格被发送到这里 nvblast ,以分解成块。块的内部部分为要应用的材料生成了新的 UV。原始游戏对象被隐藏,每个块网格体都转换为具有刚体的游戏对象。相邻的块用固定关节拴住。

要求

  • Unity 2020.3(任何以前的版本也应该可以工作)
  • 存储库中仅包含 x64 版本的 nvblast 库,对于其他平台,请访问https://forum.unity.com/threads/nvidia-blast.472623

这是如何工作的?

  • 将网格切割成更小的网格块
  • 向每个块添加刚体组件
  • 用固定接头连接块,这些接头会因力而断裂

1) 将网格切割成更小的网格块

我偶然发现了这个论坛帖子 https://forum.unity.com/threads/nvidia-blast.472623 有人想出了如何在 Unity 中使用 Nvidia blast 库。将带有网格的库(必须具有顶点、三角形、uv 和闭合而不遗漏任何面)馈送到该库并接收网格块。

2)为每个块添加刚体组件

将每个网格块转换为具有刚体的游戏对象。没有任何东西将这些大块固定在一起,它们就会碎裂到地上。用固定的关节连接块,使它们保持在原位。取每个块及其相邻块(靠近或接触的块),并用固定关节将它们连接起来。

使用

FractureThis挂载在要碎裂的物体上,程序运行会生成可以碎裂的新物体

namespace Project.Scripts.Fractures
{public class FractureThis : MonoBehaviour{[SerializeField] private Anchor anchor = Anchor.Bottom; // 碎片的锚点,默认为底部[SerializeField] private int chunks = 500; // 碎片数量[SerializeField] private float density = 50; // 碎片密度[SerializeField] private float internalStrength = 100; // 内部强度[SerializeField] private Material insideMaterial; // 内部材质[SerializeField] private Material outsideMaterial; // 外部材质private Random rng = new Random(); // 随机数生成器private void Start(){FractureGameobject(); // 开始时进行碎裂操作gameObject.SetActive(false); // 禁用当前游戏对象}public ChunkGraphManager FractureGameobject(){var seed = rng.Next(); // 生成随机种子return Fracture.FractureGameObject(gameObject,anchor,seed,chunks,insideMaterial,outsideMaterial,internalStrength,density); // 调用碎裂函数,返回碎片图管理器}}
}

破碎操作

private void FireLaser()
{var allHits = Physics.RaycastAll(barrelEnd.transform.position, transform.forward).SelectMany(hit => Physics.OverlapSphere(hit.point, hitRadius)).Distinct().ToList();foreach (var hit in allHits){hit.attachedRigidbody.AddForce(force * transform.forward);}
}

效果
在这里插入图片描述

其他

关于unity3D切割破碎插件,之前我还推荐过其他的,可以看看
【unity插件】OpenFracture插件实现unity3d物体破裂和切割
【unity插件】切割unity3d物体插件——Ezy-Slice的使用

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提升三维模型数据的几何坐标纠正速度效率具体技术方法

提升三维模型数据的几何坐标纠正速度效率具体技术方法 根据搜索结果,以下是提升倾斜摄影三维模型数据的几何坐标纠正和三维重建速度的具体技术方法: 1、增加控制点:通过增加控制点数量可以提高几何坐标精度。控制点是已知地面坐标的点&#…

微信公众号内网穿透本地调试微信授权

微信公众号内网穿透本地调试一直以来都比较麻烦 怕自己忘记, 记录一下 准备 natapp获取一个域名隧道下载nginx配置微信公众号web网页授权域名 1.natapp获取一个域名隧道 在natapp官网(https://natapp.cn/)进行注册登录后,进入…

ES6 class详解

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

关于“Python”的核心知识点整理大全58

目录 19.2.3 注销 1. 注销URL urls.py 2. 视图函数logout_view() views.py 3. 链接到注销视图 base.html 19.2.4 注册页面 1. 注册页面的URL模式 urls.py 2. 视图函数register() views.py 3. 注册模板 register.html 4. 链接到注册页面 base.html 注意 19.3 …

1.2作业

温湿度数据通过中断处理显示到数码管中 main.c #include "spi.h"#include"si7006.h"int main(){int i0,j0,m0,n0;int num[10] {0xFC,0x60,0xDA,0xF2,0x66,0xB6,0x3E,0xE0,0xFE,0xF6};SPI_init();unsigned short hum;short tem;//进行si7006的初始化si700…

计算机网络 VLAN

路由器将多个局域网连接起来,而交换机将一个局域网里的设备连接起来。 路由器的端口分配局域网的网段(子网网段),局域网的内部设备的ip都在这个网段里,再由交换机将数据派发到目的设备,交换机是按照MAC地址…

CMake入门教程【核心篇】编译类型Debug、Release、MinSizeRel、RelWithDebInfo

文章目录 1.说明1.1 Debug 配置1.2 Release 配置1.3 MinSizeRel 配置1.4 RelWithDebInfo 配置 2.提供的编译类型3.示例结论 1.说明 CMake作为一款强大的构建系统,提供了多种编译配置选项。这些配置影响编译过程中的优化级别和调试信息的包含情况。以下是CMake提供的…

技术人员的升级之路:六西格玛黑带培训的力量

在我从一名刚接触质量管理的新人成长为六西格玛黑带的过程中,有一个观念一直伴随着我,那就是改善和卓越不是一个项目,而是一场永无止境的旅程! 退一步说,六西格玛管理带来的改变对一个组织有多么深刻呢?它…

10 个值得收藏的顶级手机数据恢复软件【2024年最新】

手机数据恢复,不要担心,今天就给大家分享10款数据恢复软件! 现代人的手机中存储了许多重要数据,如照片、视频、消息、联系人等文件,如果手机损坏或数据丢失,这是一件非常烦恼的事情。此时,一款好…

教育CRM系统选型必看,CRM的这四大功能对教育企业来说必不可少

教育行业是出了名的“卷”,对教育企业来说,学生和家长也属于客户,培育与学生、家长的关系是成功的关键。然而,教育机构对CRM管理系统的需求复杂多变,很难找到满意的解决方案。与传统的CRM系统不同,教育机构…

12864液晶使用中遇到问题

碰到一个问题就是我开发板对应的教程里,用的12864显示屏第15和第16引脚分别为CS1和CS2 但是没有配送12864显示屏,店里也没有 市面上其他家的12864显示屏第15引脚为PSB,第16引脚为空 这两种12864有什么区别?我可以买引脚为PSB的这种…

PDF最强处理工具-StirlingPDF

Stirling-PDF 一个功能强大的本地托管的基于 Web 的 PDF 操作工具,这个软件最初是使用 ChatGPT 制作的,持续的版本迭代更新,支持对 PDF 文件执行各种操作,例如拆分合并、转换、重组、添加图像、旋转、压缩等。完全开源免费&#x…

Angular学习-第一天问题记录

一、使用命令搭建脚手架angular-cli 1. npm install angular/cli 2. ng new 项目名称 3. cd 项目名称 4. ng serve --open 二、问题 1.使用npm install angular/cli 命令遇到的问题 npm ERR! code E401 npm ERR! Unable to authenticate, need: BASIC realm"Sonatype Ne…

【Python_PySide6学习笔记(二十四)】菜单栏QMenuBar类的基本用法

菜单栏QMenuBar类的基本用法 菜单栏QMenuBar类的基本用法前言一、QMainWindow 和 QWidget 的区别1、QMainWindow 简介2、QWidget 简介3、QMainWindow 和 QWidget 的区别二、QMenuBar 的常用方法1、获取 QMainWindow 的菜单栏 QMenuBar 对象2、创建 Action3、创建 一级菜单 Menu…

欧拉角和四元数之间的python转换代码

1、欧拉角转换到四元数,转换顺序是ZYX def rpy2quaternion(roll, pitch, yaw):xsin(roll/2)*cos(pitch/2)*cos(yaw/2)-cos(roll/2)*sin(pitch/2)*sin(yaw/2)ycos(roll/2)*sin(pitch/2)*cos(yaw/2)sin(roll/2)*cos(pitch/2)*sin(yaw/2)zcos(roll/2)*cos(pitch/2)*si…

puppeteer入门指南

一、简介 Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。 二、使用 1、安装nodejs最新版 2、安装puppeteer-core npm install puppeteer-core 3、编写main.js const puppeteer require(puppeteer-core);(as…

【嵌入式开发 Linux 常用命令系列 1.1-- find 找到文件并替换文件中的字符串】

文章目录 find 找到文件并替换文件中的字符串 find 找到文件并替换文件中的字符串 例如要查找所有 .d 类型的文件并使用 xargs 和 sed 命令替换文件中的特定字符串,你可以在命令行中使用以下命令组合: find . -type f -name "*.d" -print0 |…

pytest命令执行测试用例,捕获输出内容的三种方式

pytest有三种捕获输出的方式: • fd(文件描述符)级别的捕获(默认):所有写入操作系统文件描述符1和2的内容将被捕获。 • sys级别的捕获:只有对Python文件sys.stdout和sys.stderr的写入操作会被…

信号可达1公里以上,Wi-Fi HaLow如何做到比传统Wi-Fi强?

随着物联网(IoT)技术的蓬勃发展,对于能够支持大量设备、长距离传输且功耗低的无线通信技术的需求日益增长。Wi-Fi HaLow(基于IEEE 802.11ah标准)是专为物联网需求量身定制的突破性无线解决方案。本文将深入探讨Wi-Fi H…

Zookeeper之Java客户端实战

ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。可供选择的Java客户端API有: ZooKeeper官方的Java客户端API。第三方的Java客户端API,比如Curator。 接下来我们将逐一学习一下这两个java客户端是如何操作zookeeper的。 1. ZooKe…