使用Ezy-Slice插件实现类似Beat Saber的模型切割效果(一)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ultramansail/article/details/100190791

简单地手动实现模型切割效果

为了更清楚的了解插件是如何使用的,我们先看看如何手动实现这样的切割效果。

1.在Github上下载插件ezy-slice。

地址:https://github.com/DavidArayan/ezy-slice

 

然后在Github上下载示例场景ezyslice-examples-scenes(可选)。

地址:https://github.com/DavidArayan/EzySlice-Example-Scenes

 

2.下载好了全部解压,然后将“EzySlice”文件夹导入到Asset目录,将“Examples”文件夹导入Asset目录(自己在压缩包里面找)。

3.打开Unity,新建场景,创建一个Cube。

4.新建一个空物体,命名为“Slicer”,作为刀片,给“Slicer”新建一个脚本SlicerTest

我们可以给Slicer加一个Plane子物体来作为刀片的显示。

5.在SlicerTest脚本里面写代码

(1)首先要引入插件的命名空间。

using EzySlice;

(2)代码的总体思路是先把Game Object切割,保存到SlicedHull中,然后分别创建切割的两块物体,最后把原来的物体关闭,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using EzySlice;

public class SlicerTest : MonoBehaviour
{
    //要切割的物体为source
    public GameObject source;
    
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.C))
        {
            //将Souce切割,传入的第一个参数为切割的位置(即刀片的位置),传入的第二个参数为切割面的法向量(即刀片表面的法向量)
            SlicedHull hull = source.Slice(transform.position, transform.up);

            //创建把source切割以后的上半部分物体
            hull.CreateUpperHull(source);
            //创建把source切割以后的下半部分物体
            hull.CreateLowerHull(source);

            //因为是新建切出来两个物体,因此要把原来的物体关闭
            source.SetActive(false);
        }
    }
}

6.为了区分,我们给Cube和刀片分别上不同的材质。

7.我们把Cube拖动到SlicerTest的source下。

8.运行,然后把刀片移动到Cube上,按下C键进行切割,我们会发现Cube完美沿着刀片被切割,Cube被切成两块,一块名叫Upper_Hull,一块名叫Lower_Hull,之前的Cube仍然存在,我们把它关闭了。

猜你喜欢

转载自blog.csdn.net/ultramansail/article/details/100190791
今日推荐