Menu
CoddyTech
flag Ar iconالعربيةdown icon

الارتداد والاحتكاك

جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 12 من 63.

يعتمد ارتداد المصادم وانزلاقه على PhysicsMaterial (الاسم في Unity 6؛ وكانت الإصدارات الأقدم تسميه PhysicMaterial). تتراوح قيمة bounciness من 0 (من دون ارتداد) إلى 1 (يحتفظ بكل سرعته). تعمل dynamicFriction على إبطاء الجسم المنزلق، وتحدد staticFriction مقدار القوة اللازمة لدفع جسم ساكن قبل أن يبدأ بالانزلاق. يتصرف المصادم الذي لا يملك مادة كما لو أن احتكاكه 0.6 وارتداده 0. تمنح هذه الكرة فائقة الارتداد مصادمها مادةً ارتدادية خاصة بها:

void Start()
{
    PhysicsMaterial mat = GetComponent<Collider>().material;   // النسخة الخاصة بهذا المصادم
    mat.bounciness = 0.9f;
    mat.bounceCombine = PhysicsMaterialCombine.Maximum;
}

يتضمن التلامس مصادمين، لذا تجمع Unity قيمتيهما. تحدد كل مادة كيفية الجمع، باستخدام bounceCombine للارتداد وfrictionCombine للاحتكاك، ويأخذ كل منهما أحد أربعة أوضاع: Average (الافتراضي)، أو Minimum، أو Multiply، أو Maximum. عندما يطلب المصادمان وضعين مختلفين، يفوز الوضع المذكور لاحقًا في هذه القائمة. على أرضية بلا مادة، سيعطي Average الكرة (0.9 + 0) / 2 = 0.45. أما مع Maximum، فتحتفظ الكرة بنسبة 0.9 من سرعتها عند كل ارتداد، ما يعادل 0.9 x 0.9 = 81% من ارتفاعها، لأن الارتفاع يتناسب مع مربع السرعة.

تمنح .material هذا المصادم نسخة خاصة به من مادته، لذا تؤثر التغييرات فيه وحده. أما .sharedMaterial فهي أصل المادة نفسه، المشترك بين كل المصادمات التي تستخدمه، وتكون null في المصادم الذي لم تُعيَّن له مادة قط.

challenge icon

التحدي

سهل

امنح ساحة اللعب أسطحها. يوجد النص البرمجي Surface على الترامبولين الأزرق (bounce 0.8، وfriction 0.6) وعلى شريط الجليد (bounce 0، وfriction 0.1). لا تملك الكرة والصندوق مواد خاصة بهما.

  • في Start()، عيّن مادة المصادم الخاص بهذا السطح إلى bounce وfriction (للاحتكاك الديناميكي والثابت على حد سواء).
  • كل ما يهبط على سطح يجب أن يرتد باستخدام قيمة bounce الكاملة لذلك السطح، وكل ما ينزلق عليه يجب أن يستخدم قيمة friction الخاصة بالسطح، لا أن يمزجها مع القيمة 0.6 للأشياء التي لا تملك مادة.

اضغط على Play لمشاهدة الكرة وهي ترتد، ثم اضغط على Check: سيؤدي ذلك أيضًا إلى انزلاق الصندوق عبر الجليد.

جرّب بنفسك

using UnityEngine;

public class Surface : MonoBehaviour
{
    public float bounce = 0f;
    public float friction = 0.6f;

    void Start()
    {
        // امنح هذا المصادم مادته الخاصة مع الارتداد والاحتكاك
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الفيزياء وأسلوب اللعب