这篇文章主要为大家详细介绍了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实现模型多边形顺序切割
基础教程推荐
猜你喜欢
- winform把Office转成PDF文件 2023-06-14
- ZooKeeper的安装及部署教程 2023-01-22
- C# 调用WebService的方法 2023-03-09
- C#类和结构详解 2023-05-30
- C# windows语音识别与朗读实例 2023-04-27
- C# List实现行转列的通用方案 2022-11-02
- C#控制台实现飞行棋小游戏 2023-04-22
- 一个读写csv文件的C#类 2022-11-06
- unity实现动态排行榜 2023-04-27
- linux – 如何在Debian Jessie中安装dotnet core sdk 2023-09-26