「Unity」 ezy-slice学习笔记

Posted by Dawn-K's Blog on October 1, 2020

ezy-slice 使用笔记

[toc]

下载

ezy-slice

ezyslice-examples-scenes(可选)

学习资料

参考资料

【简明游戏教程】引起舒适的切割插件——Ezy-Slice

第一个教程基本正确,但是有一些跳跃,和下面的b站的视频教程结合起来就相对好理解一些,可以设置物体的材质以及下文的”旋转”.

代码

参考资料里面的代码少了关键的两行,导致平面无法旋转.已在下文中指出.

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
// SlicerTest.cs
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()
    {
        // 此处需要加下面两行,否则平面无法转动
        float mx = Input.GetAxis("Mouse X");
        transform.Rotate(0, 0, -mx);

        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);
        }
    }
}

效果

平面会根据鼠标的位置进行旋转.按C键切割(如果平面和方块无接触,那么console中会报错),可通过左侧的层次管理器看到Upper_HullLower_Hull的出现,然后在scene中切换到Shaded Wireframe模式下可清晰看到方块已经被切割.