Menu
CoddyTech

الأجسام الحركية

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

يجب أن تتصادم المنصات المتحركة والمصاعد والأبواب كالأجسام الصلبة، لكن يجب ألا تسقط أو تدفعها الأجسام التي تهبط عليها. هذا هو الجسم الحركي: اضبط rb.isKinematic = true، ولن تعود الجاذبية والقوى والاصطدامات تحرّكه. يظل مصادمه محسوبًا، لذا يصطدم به الجسم الديناميكي (الذي تحرّكه الفيزياء) كما يصطدم بالجدار، ويقف عليه كما يقف على الأرض. أنت تحرّك الجسم الحركي بنفسك باستخدام rb.MovePosition.

يرتفع هذا المصعد بسرعة lift متر/ثانية حتى يصل إلى top. تحدد MovePosition الموضع الذي ينبغي أن يكون فيه الجسم بعد هذه الخطوة، لذا يضيف الكود مقدار الحركة لخطوة واحدة، مستخدمًا Time.fixedDeltaTime:

void Start()
{
    rb = GetComponent<Rigidbody>();
    rb.isKinematic = true;
}

void FixedUpdate()
{
    if (rb.position.y < top)
    {
        rb.MovePosition(rb.position + Vector3.up * lift * Time.fixedDeltaTime);
    }
}

لماذا لا نضبط transform.position؟ ذلك ينقل الجسم آنيًا، ولا تعرف الفيزياء أبدًا أنه تحرّك: فالصندوق الموضوع على منصة منزلقة سيُترك خلفها بدلًا من أن يتحرك معها. تخبر MovePosition الفيزياء بأن الجسم انتقل إلى الموضع الجديد خلال الخطوة، لذا يُحمل ما يلامسه ويُدفَع على نحو صحيح. لا يفعل AddForce شيئًا مع الجسم الحركي، كما أن الأجسام الحركية لا تتصادم مطلقًا مع المصادمات الثابتة أو مع بعضها بعضًا؛ فالأجسام الديناميكية وحدها هي التي تصطدم بها.

challenge icon

التحدي

سهل

علّق البارجة فوق الحمم وحرّكها باستخدام الأسهم.

  1. في Start()، عيّن rb.isKinematic = true;.
  2. في FixedUpdate()، اقرأ float h = Input.GetAxisRaw("Horizontal"); واستدعِ rb.MovePosition(rb.position + Vector3.right * h * speed * Time.fixedDeltaTime);.

اضغط على «العب» وحرّكها: ستبقى البارجة معلّقة في الهواء، وسيرتدّ عنها الدرون. ثم اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;

public class Barge : MonoBehaviour
{
    public float speed = 2f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        // اجعل البارجة حركية
    }

    void FixedUpdate()
    {
        // حرّكها انزلاقيًا على طول المحور x باستخدام مفاتيح الأسهم
    }
}

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

تدرّب بنفسك: Playground لـ Unity