Unity使用EzySlice實(shí)現(xiàn)模型多邊形順序切割
Unity使用EzySlice實(shí)現(xiàn)模型切割,供大家參考,具體內(nèi)容如下
老規(guī)矩,直接上代碼:
注意:腳本搭載和需要的材質(zhì)球以及切割數(shù)組填充
EzySlice 多邊形順序切割
using System.Collections; using System.Collections.Generic; using UnityEngine; using EzySlice; public class SplitterModel_ZH : MonoBehaviour { //切割預(yù)制體材質(zhì) public Material _NewMaterial; //被切割預(yù)制體數(shù)組 public List<GameObject> _ListGamPreFab; //調(diào)用切割模型數(shù)組 序號(hào) private int _ListInt = 0; void Update() { if (Input.GetMouseButtonDown(0)) { StartCoroutine(SlicedModel()); } } public IEnumerator SlicedModel() { if (_ListGamPreFab != null) { //創(chuàng)建忽略切割對(duì)象 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) { //銷毀當(dāng)前被切割物體 Destroy(item.gameObject); //切割出現(xiàn)的物體 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); //添加網(wǎng)格組件 _Upper.AddComponent<MeshCollider>(); //當(dāng)前切割物體消失(可擴(kuò)展) _ListGamPreFab[_ListInt].gameObject.SetActive(false); #region 棄用 //for (int i = 0; i < _objs.Length; i++) //{ // _objs[i].AddComponent<Rigidbody>(); // _objs[i].AddComponent<MeshCollider>().convex = true; // //奇 偶 判斷 如果是奇數(shù) // if ((i & 1) != 0) // { // } //} #endregion } } } _ListInt++; //延遲執(zhí)行 yield return new WaitForSeconds(0.5f); //判斷數(shù)組大小 if (_ListInt == _ListGamPreFab.Count) { //停止協(xié)程 StopCoroutine(SlicedModel()); } else { StartCoroutine(SlicedModel()); } } }
補(bǔ)充一點(diǎn):當(dāng)前切割數(shù)組可擴(kuò)展,可以使用 LineRender 繪畫實(shí)現(xiàn)自定義,只不過我沒時(shí)間去寫。
如果有那位大神寫了請(qǐng)幫忙踢我一下,哈哈哈。
初始狀態(tài):
腳本搭載情況:
最終效果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
DevExpress實(shí)現(xiàn)GridControl單元格編輯驗(yàn)證的方法
這篇文章主要介紹了DevExpress實(shí)現(xiàn)GridControl單元格編輯驗(yàn)證的方法,很實(shí)用的功能,需要的朋友可以參考下2014-08-08WinForm中comboBox控件數(shù)據(jù)綁定實(shí)現(xiàn)方法
這篇文章主要介紹了WinForm中comboBox控件數(shù)據(jù)綁定實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了WinForm實(shí)現(xiàn)comboBox控件數(shù)據(jù)綁定的常用方法與相關(guān)操作技巧,需要的朋友可以參考下2017-05-05C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用
這篇文章主要給大家介紹了關(guān)于C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02基于C#設(shè)計(jì)一個(gè)雙色球選號(hào)工具
這篇文章主要為大家詳細(xì)介紹了如何利用C#設(shè)計(jì)實(shí)現(xiàn)一個(gè)雙色球選號(hào)工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04C# datatable 不能通過已刪除的行訪問該行的信息處理方法
采用datatable.Rows[i].Delete()刪除行后再訪問該表時(shí)出現(xiàn)出現(xiàn)“不能通過已刪除的行訪問該行的信息”的錯(cuò)誤2012-11-11C#基于ScottPlot實(shí)現(xiàn)可視化的示例代碼
這篇文章主要為大家詳細(xì)介紹了C#如何基于ScottPlot實(shí)現(xiàn)可視化效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01