Unity 는 EzySlice 를 사용 하여 모델 다각형 순서 절단 을 실현 합 니 다.

3167 단어 unity절단 하 다.
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)
     // {

     // }
     //}

     #endregion
    }
   }
  }
  

  _ListInt++;
  //    
  yield return new WaitForSeconds(0.5f);

  //      
  if (_ListInt == _ListGamPreFab.Count)
  {
   //    
   StopCoroutine(SlicedModel());
  }
  else
  {
   StartCoroutine(SlicedModel());
  }  
 }
}
보충 점:현재 절단 배열 을 확장 할 수 있 습 니 다.LineRender 그림 으로 사용자 정의 할 수 있 습 니 다.다만 저 는 쓸 시간 이 없습니다.
그 큰 신 이 쓰 셨 다 면 저 를 좀 차 주세요.하하 하.
링크:Unity LineRender 회화
초기 상태:

스 크 립 트 탑재 상황:

최종 효과:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기