الأجسام الحركية
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 6 من 63.
يجب أن تتصادم المنصات المتحركة والمصاعد والأبواب كما لو كانت أجسامًا صلبة، لكن يجب ألا تسقط أو تُدفَع بفعل أي شيء يهبط عليها. هذا جسم حركي: عيّن 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 شيئًا على جسم حركي، كما أن الأجسام الحركية لا تتصادم مطلقًا مع المصادمات الثابتة أو مع بعضها بعضًا: الأجسام الديناميكية وحدها هي التي تصطدم بها.
التحدي
سهلتتدلى العبّارة فوق الحمم، وينبغي أن تحركها الأسهم إلى اليسار واليمين على طول المحور x بسرعة speed م/ث (القيمة 2 في Inspector). حاليًا، فإن Rigidbody الخاص بها عادي، لذا تسقط في الحمم.
- عند بدء اللعبة، اجعل العبّارة حركية، بحيث تبقى معلقة في الهواء ولا يستطيع أي شيء يصطدم بها دفعها بعيدًا.
- حرّكها باستخدام
MovePositionفيFixedUpdate()، مع استخدام المحور Horizontal الخام.
اضغط على Play وحرّك العبّارة، ثم اضغط على Check.
جرّب بنفسك
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 للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق