不,我并不是说我的文章属于同类文章,因为该方法非常简单,但是由于某种原因,我没有为此找到直接的教程。
让我们从以下事实开始:在Unity中,您无法销毁/分离/切割对象,实际上,我们的销毁根本不是销毁,而只是视觉上的模仿,因为正如我上文所述,否则是不可能的。
拥有!
别再倒水浪费时间了(我仍然觉得适合离开序言)。首先,您需要从Steam商店下载一个名为Blender的程序,然后进入并开始理解。
创建一个新项目,然后在“编辑/编辑”选项卡中,查找“附加组件”按钮,并在搜索中写入“细胞破裂”,然后在其旁边打一个勾号以启用它。
然后我们进入Blender中的场景本身,然后在创建场景时看到那里最初存在的多维数据集。
我们对“建模”选项卡感兴趣,进入该选项卡,右键单击对象>“细分”,我们看到多维数据集实际上已经变成了“单元格”
现在回到第一个选项卡“布局”,单击按钮对象/对象>快速效果/快速效果>细胞破裂,我们将打开一个用于管理插件的窗口。
只需按“是”按钮,然后观察结果即可。
如您所见,我们的多维数据集在视觉上被划分了,这意味着一切都进行得很好,这是非常零碎的事情。
最后的步骤留在Blender中,您可以继续创建场景,单击文件/文件>导出/导出> .fbx,然后将其保存到方便我们的文件夹中。
我们打开Unity,创建或打开一个旧项目,然后开始实际组装场景。为此,我们需要创建一个平面和一个球体,现在我们将刚从文件夹中导出的多维数据集添加到层次结构窗口中,然后将其直接拖到场景中。
为了使Unity理解这是一个物理对象,您需要添加两件事,在层次结构窗口中单击我们的多维数据集,从而扩展内部对象(包含对象的部分)的列表,然后按住shift键,从列表中选择第一个对象,然后最后,通过这种操作,我们将选择整个列表。
仍然需要单击AddComponent,然后在已注册对撞机的搜索中选择“ Mesh Collider”。
在对撞机本身中,单击“凸”以显示它,仅此而已。
现在,我们重复我们之前做的事情,但是我们只是在寻找刚体。
您只需要对球体进行同样的操作,而无需碰撞器,因为它最初悬挂在那里。
这样就完成了我们的准备工作,我们可以继续进行最有趣的讨论,正如他们所说的:“简洁是人才的姐妹”,这就是为什么我们在层次结构窗口中创建新的C#脚本,并在其中编写以下内容:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FragmentSplit : MonoBehaviour {
public bool isdead = false; // ,
public float timeRemaining = 100;// ( )
void Start()
{
GetComponent<Rigidbody>().isKinematic = true;//
}
void OnCollisionEnter(Collision collision)//
{
GetComponent<Rigidbody>().isKinematic = false;// - ,
isdead = true;// , "",
}
void Update()
{
if (isdead)// ,
{
timeRemaining -= Time.deltaTime;//
if (timeRemaining < 0) // ,
{
Destroy (gameObject);//
}
}
}
}
现在,最后一次,选择列表中的所有对象,单击AddComponent,然后添加我们的脚本,
将球体升高到立方体上方,然后打开项目。
如您所见,一切正常,立方体破裂,我们的球体在某个地方滚动。
就是这样,也许您会说,您可以进行更平滑的去除,以使碎片消失,而不是像笨拙的那样。
我只会回答你,我只是演示了脚本是如何工作的,而没有详细介绍如何和何时移除这些“碎片”,只是简单地表明了这种可能性,而且绝对没有什么复杂的。
我并不认为来自Unity(或其他开发人员)的资产比我的脚本好两行,但仍然如此。
我在写这篇文章时并没有强调我会被了解并理解Unity和语言的人阅读,他们可以编写一个脚本来更精确地控制舞台上对象发生的一切,因此我写了一篇文章供学生和初学者参考。
我不会说我完全了解该语言,但这并不是今天的第一天,一般而言,这一切对我来说都是如此,我希望我能帮助一个人,为您的朋友们编写好代码!