我是靠谱客的博主 傻傻灰狼,这篇文章主要介绍Unity使用EzySlice实现模型多边形顺序切割,现在分享给大家,希望可以做个参考。

Unity使用EzySlice实现模型切割,供大家参考,具体内容如下

老规矩,直接上代码:

注意:脚本搭载和需要的材质球以及切割数组填充

EzySlice 多边形顺序切割

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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) // { // } //} #endregion } } } _ListInt++; //延迟执行 yield return new WaitForSeconds(0.5f); //判断数组大小 if (_ListInt == _ListGamPreFab.Count) { //停止协程 StopCoroutine(SlicedModel()); } else { StartCoroutine(SlicedModel()); } } }

补充一点:当前切割数组可扩展,可以使用 LineRender 绘画实现自定义,只不过我没时间去写。
如果有那位大神写了请帮忙踢我一下,哈哈哈。

链接: Unity LineRender 绘画

初始状态:

脚本搭载情况:

最终效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持靠谱客。

最后

以上就是傻傻灰狼最近收集整理的关于Unity使用EzySlice实现模型多边形顺序切割的全部内容,更多相关Unity使用EzySlice实现模型多边形顺序切割内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(136)

评论列表共有 0 条评论

立即
投稿
返回
顶部