الدفع باستخدام AddForce
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 2 من 71.
بمجرد أن يصبح للكائن مكوّن Rigidbody، تتولى الفيزياء تحريكه، لذا توقّف عن تغيير موضعه وادفعه بدلًا من ذلك. تدفع rb.AddForce(force) الجسم بقوة، وهي Vector3 بوحدة النيوتن. القوة لا تحدد سرعة: بل تزيد سرعة الجسم ما دمت تواصل إضافتها، بمقدار القوة مقسومة على الكتلة في كل ثانية. توقّف عن الدفع، وسيواصل الجسم الحركة بالسرعة التي اكتسبها.
لدى هذه الحوامة (2 kg) دافع: ما دامت ضغطة السهم للأعلى مستمرة، تدفعها قوة مقدارها thrust إلى الأمام، على محور +z. إذا كانت قيمة الدفع 12، تكتسب سرعة مقدارها 12 / 2 = 6 m/s كل ثانية:
public float thrust = 12f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.UpArrow))
{
rb.AddForce(Vector3.forward * thrust);
}
}تُطبَّق القوى داخل FixedUpdate()، التي تستدعيها Unity قبل كل خطوة فيزيائية، بمعدل 50 مرة في الثانية (يوضح الدرس 4 السبب). لا توجد Time.deltaTime في السطر: فالدالة AddForce توزّع القوة على الخطوة بالفعل، وضربها في Time.deltaTime سيجعل الدفع أضعف 50 مرة. وعلى الأرض، يدفع الاحتكاك في الاتجاه المعاكس، لذا قد لا تحرك قوة صغيرة صندوقًا ثقيلًا إطلاقًا.
التحدي
سهلادفع القرص حول الحلبة الخالية من الاحتكاك باستخدام القوى.
- في
FixedUpdate()، اقرأfloat h = Input.GetAxis("Horizontal");وfloat v = Input.GetAxis("Vertical");. - استدعِ
rb.AddForce(new Vector3(h, 0, v) * push);، من دونTime.deltaTime.
اضغط على «العب»، وادفع القرص ثم اتركه: سيواصل الانزلاق. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
public class PuckPusher : MonoBehaviour
{
public float push = 4f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// ادفع القرص: أفقيًا على طول x، وعموديًا على طول z
}
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادونتدرّب بنفسك: Playground لـ Unity