Menu
CoddyTech

القفز باستخدام دفعة

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

تأخذ 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: دفعة واحدة، مع تجاهل الكتلة: يُضاف المتجه مباشرةً إلى السرعة.
challenge icon

التحدي

سهل

اجعل الضفدع يقفز مرة واحدة عند كل ضغطة على مفتاح المسافة.

  1. أسفل التعليق، اكتب if (Input.GetKeyDown(KeyCode.Space)).
  2. داخلها، استدعِ rb.AddForce(Vector3.up * jumpImpulse, ForceMode.Impulse);، لكي يقفز الضفدع ذو الكتلة البالغة 2 kg.

اضغط على «العب» ثم اضغط على مفتاح المسافة: يقفز الضفدع إلى الأعلى ثم يسقط. بعد ذلك، اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;

public class FrogJump : MonoBehaviour
{
    public float jumpImpulse = 10f;
    private Rigidbody rb;

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

    void Update()
    {
        // Space: دفعة واحدة إلى الأعلى بقوة jumpImpulse
    }
}

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

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