الأجسام الحركية
جزء من قسم الفيزياء وأسلوب اللعب في رحلة 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 شيئًا مع الجسم الحركي، كما أن الأجسام الحركية لا تتصادم مطلقًا مع المصادمات الثابتة أو مع بعضها بعضًا؛ فالأجسام الديناميكية وحدها هي التي تصطدم بها.
التحدي
سهلعلّق البارجة فوق الحمم وحرّكها باستخدام الأسهم.
- في
Start()، عيّنrb.isKinematic = true;. - في
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 باستخدام مفاتيح الأسهم
}
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادونتدرّب بنفسك: Playground لـ Unity