使用Unity和Blender进行简单的销毁模拟

你好!最近,我对Unity中的销毁感到疑惑,在Internet上搜索了有关此主题的内容,但是,found,我发现了很多问题和讨论。



不,我并不是说我的文章属于同类文章,因为该方法非常简单,但是由于某种原因,我没有为此找到直接的教程。



让我们从以下事实开始:在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和语言的人阅读,他们可以编写一个脚本来更精确地控制舞台上对象发生的一切,因此我写了一篇文章供学生和初学者参考。



我不会说我完全了解该语言,但这并不是今天的第一天,一般而言,这一切对我来说都是如此,我希望我能帮助一个人,为您的朋友们编写好代码!



All Articles