القفز باستخدام دفعة
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 3 من 63.
تأخذ AddForce وسيطًا ثانيًا، وهو ForceMode، يحدد كيفية استخدام المتجه. من دونه، ستحصل على ForceMode.Force، وهي دفعة تدوم خطوة فيزيائية واحدة، لذا يجب إضافتها خطوة بعد خطوة. تحدث الركلة أو القفزة أو الانفجار دفعة واحدة، وهذا هو ForceMode.Impulse: الدفعة كاملةً مرة واحدة، فتتغير السرعة بمقدار الدفع مقسومًا على الكتلة.
تُركل كرة القدم هذه (0.5 kg) عند النقر. تقفز سرعتها بمقدار (0, 2, 6) / 0.5 = (0, 4, 12) m/s عند الخطوة الفيزيائية التالية، ثم تتولى الجاذبية والعشب الأمر:
void Update()
{
if (Input.GetMouseButtonDown(0))
{
rb.AddForce(new Vector3(0, 2, 6), ForceMode.Impulse);
}
}يمكن استدعاء دفعة لمرة واحدة من Update() في الإطار الذي يحدث فيه النقر: تحتفظ بها Unity وتطبقها عند الخطوة الفيزيائية التالية. تختلف الأوضاع الأربعة من ناحيتين: هل تُطبّق كلها دفعة واحدة أم على مدار خطوة، وهل تؤخذ الكتلة في الحسبان أم لا:
Force: على مدار خطوة، مع القسمة على الكتلة (المحركات، والرياح).Acceleration: على مدار خطوة، مع تجاهل الكتلة.Impulse: دفعة واحدة، مع القسمة على الكتلة (الركلات، والقفزات).VelocityChange: دفعة واحدة، مع تجاهل الكتلة: يُضاف المتجه مباشرةً إلى السرعة.
التحدي
سهلاجعل الضفدع يقفز. كل ضغطة على مفتاح المسافة تمنحه دفعة واحدة إلى الأعلى بقيمة jumpImpulse (10 في Inspector). يزن الضفدع 2 kg، ويجب أن تأخذ القفزة كتلته في الحسبان: فالضفدع الأثقل يقفز إلى ارتفاع أقل.
الاستمرار في الضغط على مفتاح المسافة لا يزال يُحتسب قفزة واحدة. اضغط على تشغيل واجعله يقفز، ثم اضغط على تحقّق.
جرّب بنفسك
using UnityEngine;
public class FrogJump : MonoBehaviour
{
public float jumpImpulse = 10f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
// Space: دفعة واحدة إلى الأعلى بمقدار jumpImpulse
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق