الارتداد والاحتكاك
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 12 من 71.
تعتمد طريقة ارتداد المُصادِم وانزلاقه على 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 للمُصادِم الذي لم تُعيّن له مادة قط.
التحدي
سهلامنح الترامبولين والجليد قيمتي ارتداد واحتكاك خاصتين بهما.
- في
Start()، استخدمPhysicsMaterial mat = GetComponent<Collider>().material;واضبطmat.bounciness = bounce;وmat.dynamicFrictionوmat.staticFrictionعلىfriction. - اضبط
mat.bounceCombine = PhysicsMaterialCombine.Maximum;وmat.frictionCombine = PhysicsMaterialCombine.Minimum;، لكي تكون الأولوية للقيم الخاصة بالسطح.
اضغط على «العب»: سترتد الكرة عاليًا عن الترامبولين. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
public class Surface : MonoBehaviour
{
public float bounce = 0f;
public float friction = 0.6f;
void Start()
{
// امنح هذا المصادم مادة خاصة به مع قيمتي الارتداد والاحتكاك
}
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادون2التصادمات
OnCollisionEnterماذا اصطدمتُ به؟التحطّم عند الاصطدامالوقوف على الأرضالارتداد والاحتكاكأشكال المصادماتمراجعة: جدار قابل للكسرتدرّب بنفسك: Playground لـ Unity