التحطّم عند الاصطدام
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 10 من 71.
ما مدى قوة الاصطدام؟ تمثل collision.relativeVelocity السرعة التي كان الجسمان يقتربان بها أحدهما من الآخر لحظة التقائهما، ويمثل magnitude مقدار سرعة الاصطدام بوحدة m/s. إنها الفرق بين السرعتين: تصطدم سيارة تسير بسرعة 10 m/s بسيارة تسير في الاتجاه نفسه بسرعة 8 m/s بسرعة 2 m/s فقط، وترصد السيارتان سرعة الاصطدام نفسها.
تتكسر هذه البيضة عندما تهبط بسرعة تتجاوز crackSpeed. إذا أُسقطت من ارتفاع 1 m، فستصطدم بسرعة تقارب 4.4 m/s (الجذر التربيعي لـ 2 x 9.81 x 1)، ومن ارتفاع 2 m بسرعة تقارب 6.3 m/s:
public float crackSpeed = 5f;
void OnCollisionEnter(Collision collision)
{
if (collision.relativeVelocity.magnitude > crackSpeed)
{
Debug.Log("Splat!");
Destroy(gameObject);
}
}لماذا لا نستخدم rb.linearVelocity الخاصة بالبيضة؟ عندما تُستدعى OnCollisionEnter، تكون الفيزياء قد عالجت الاصطدام بالفعل، لذا تكون سرعة البيضة هي السرعة المتبقية بعده، وتكون قريبة من الصفر. أما relativeVelocity فتحتفظ بسرعة الاصطدام نفسه. إنها سرعة، لذا لا تؤثر الكتلة فيها: فالبيضة الثقيلة والخفيفة اللتان تهبطان بسرعة 6 m/s تسجلان السرعة نفسها، وهي 6.
التحدي
سهلاكتب Window.cs: تضعف النافذة مع كل اصطدام، وتتحطم عند 0.
- في
OnCollisionEnterالخاص بالنافذة، اطرحcollision.relativeVelocity.magnitudeمنstrength. - عندما تكون
strength <= 0f، استدعِDestroy(gameObject);.
اضغط على «العب»، وحرّك الكرات برفق باستخدام سهم الأعلى، ثم حرّك كرة بقوة باستخدام مفتاح المسافة: ستتحطم النافذة. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
public class Window : MonoBehaviour
{
public float strength = 10f;
// كل ضربة تخصم سرعة اصطدامها من strength؛ وعندما تصل إلى 0 تتحطم النافذة
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادون2التصادمات
OnCollisionEnterماذا اصطدمتُ به؟التحطّم عند الاصطدامالوقوف على الأرضالارتداد والاحتكاكأشكال المصادماتمراجعة: جدار قابل للكسرتدرّب بنفسك: Playground لـ Unity