这篇文章主要为大家详细介绍了Unity使用EzySlice实现模型多边形顺序切割,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Unity使用EzySlice实现模型切割,供大家参考,具体内容如下
老规矩,直接上代码:
注意:脚本搭载和需要的材质球以及切割数组填充
EzySlice 多边形顺序切割
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using EzySlice;
public class SplitterModel_ZH : MonoBehaviour
{
//切割预制体材质
public Material _NewMaterial;
//被切割预制体数组
public List<GameObject> _ListGamPreFab;
//调用切割模型数组 序号
private int _ListInt = 0;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
StartCoroutine(SlicedModel());
}
}
public IEnumerator SlicedModel()
{
if (_ListGamPreFab != null)
{
//创建忽略切割对象
Collider[] _Colliders = Physics.OverlapBox(_ListGamPreFab[_ListInt].transform.position, new Vector3(4, 0.00005f, 4), _ListGamPreFab[_ListInt].transform.rotation, ~LayerMask.GetMask("Solid"));
foreach (var item in _Colliders)
{
//销毁当前被切割物体
Destroy(item.gameObject);
//切割出现的物体
SlicedHull _SlicedHull = item.gameObject.Slice(_ListGamPreFab[_ListInt].transform.position, _ListGamPreFab[_ListInt].transform.up);
if (_SlicedHull != null)
{
//切割下半部分部分 物体
GameObject _Lower = _SlicedHull.CreateLowerHull(item.gameObject, _NewMaterial);
//切割上半部分部分 物体
GameObject _Upper = _SlicedHull.CreateUpperHull(item.gameObject, _NewMaterial);
//销毁切割形成的上半部分
Destroy(_Lower);
//添加网格组件
_Upper.AddComponent<MeshCollider>();
//当前切割物体消失(可扩展)
_ListGamPreFab[_ListInt].gameObject.SetActive(false);
#region 弃用
//for (int i = 0; i < _objs.Length; i++)
//{
// _objs[i].AddComponent<Rigidbody>();
// _objs[i].AddComponent<MeshCollider>().convex = true;
// //奇 偶 判断 如果是奇数
// if ((i & 1) != 0)
// {
// }
/
沃梦达教程
本文标题为:Unity使用EzySlice实现模型多边形顺序切割
猜你喜欢
- Unity Shader实现模糊效果 2023-04-27
- Oracle中for循环的使用方法 2023-07-04
- c# 模拟线性回归的示例 2023-03-14
- Unity3D实现渐变颜色效果 2023-01-16
- .NET CORE DI 依赖注入 2023-09-27
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- 如何使用C# 捕获进程输出 2023-03-10
- user32.dll 函数说明小结 2022-12-26