这篇文章主要为大家详细介绍了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实现模型多边形顺序切割


基础教程推荐
猜你喜欢
- C#中 Json 序列化去掉null值的方法 2022-11-18
- 实例详解C#实现http不同方法的请求 2022-12-26
- Unity shader实现高斯模糊效果 2023-01-16
- C# 解析XML和反序列化的示例 2023-04-14
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C#中的Linq to JSON操作详解 2023-06-08
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30