محاكاة بسيطة للتدمير باستخدام Unity and Blender

مرحبا! تساءلت مؤخرًا عن التدمير في الوحدة ، وبحثت في الإنترنت عما يدور حول هذا الموضوع ، لكن للأسف ، لم أجد سوى مجموعة من الأسئلة والمناقشات.



لا ، أنا لا أدعي أن مقالتي فريدة من نوعها ، لأن الطريقة بسيطة للغاية ، لكن لسبب ما لم أجد برنامجًا تعليميًا مباشرًا لذلك.



لنبدأ بحقيقة أنه في الوحدة لا يمكنك تدمير / فصل / قطع شيء ما ، فإن تدميرنا في الواقع لن يكون تدميرًا على الإطلاق ، ولكن فقط تقليد بصري ، لأنه ، كما قلت أعلاه ، من المستحيل خلاف ذلك.



خاصة!



توقف عن صب الماء وإهدار وقتك (ما زلت أرى أنه من المناسب ترك المقدمة). أولاً ، تحتاج إلى تنزيل برنامج يسمى Blender من متجر Steam ، وبعد ذلك ندخل ونبدأ في الفهم.



أنشئ مشروعًا جديدًا ، وفي علامة التبويب "تحرير / تحرير" ، ابحث عن الزر "الإضافات" ، واكتب كسر الخلية في البحث ، ثم ضع علامة اختيار بجواره لتمكينه.







ثم نذهب إلى المشهد نفسه في Blender ، ونرى هناك المكعب الموجود في البداية عند إنشاء المشهد.



نحن مهتمون بعلامة التبويب "النمذجة" ، انتقل إليها ، وانقر بزر الماوس الأيمن على الكائن> تقسيم فرعي ، ونرى أن المكعب أصبح ، كما كان ، "خلية"







عد الآن إلى علامة التبويب الأولى "Layout" ، وانقر على زر كائن / كائن> تأثيرات سريعة / تأثيرات سريعة> كسر الخلية ، وسنفتح نافذة لإدارة الملحق.







فقط اضغط على زر "YES" وشاهد النتيجة.



كما ترون ، مكعبنا مقسم بصريًا ، مما يعني أن كل شيء سار على ما يرام ، وهذا هو التجزئة ذاتها.







تم ترك الخطوات الأخيرة في Blender ، ويمكنك المتابعة لإنشاء مشهد ، والنقر فوق ملف / ملف> تصدير / تصدير> .fbx ، وحفظه في مجلد مناسب لنا.







نفتح الوحدة ، وننشئ أو نفتح مشروعًا قديمًا ، ونبدأ فعليًا في تجميع المشهد الخاص بنا. للقيام بذلك ، نحتاج إلى إنشاء لوحة وكرة ، الآن نضيف المكعب الذي قمنا بتصديره للتو من مجلدنا إلى نافذة التسلسل الهرمي ، ثم اسحبه مباشرة إلى المشهد.



لكي تفهم الوحدة أن هذا كائن مادي ، فأنت بحاجة إلى إضافة شيئين ، والنقر فوق المكعب الخاص بنا في نافذة التسلسل الهرمي ، وبالتالي توسيع قائمة الكائنات الموجودة بداخله (الأجزاء التي يتكون منها) ، ثم الضغط على مفتاح 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 (أو المطورين الآخرين) ستكون أفضل من نصوصي من خلال سطرين ، ولكن لا يزال.



لم أقم بعمل هذا المقال مع التركيز على حقيقة أن الأشخاص الذين يعرفون ويفهمون الوحدة واللغة سيقرؤون لي ، والذين يمكنهم كتابة سيناريو بتحكم أكثر دقة في كل ما يحدث لكائن ما على المسرح ، لقد كتبت مقالًا لمزيد من الطلاب والمبتدئين.



لن أقول إنني أعرف اللغة جيدًا وشاملًا ، لكن هذا ليس اليوم الأول في هذا ، بشكل عام ، هذا كل شيء بالنسبة لي ، آمل أن أساعد شخصًا ما ، رمز جيد لأصدقائك! ..



All Articles