الكائنات المتحركة هي كائنات تتحرك على محور واحد أو أكثر داخل الفضاء ثلاثي الأبعاد. باستخدام القوة المدمجة لمحرك محاكاة Roblox، يمكنك جعل الكائنات تتحرك وتتفاعل مع بيئتها بطريقة تحاكي السلوك الفيزيائي في العالم الحقيقي الذي يكون مألوفًا وبديهيًا للاعبين، مثل الجاذبية، الديناميكا الهوائية، والاحتكاك.
باستخدام ملف Moving Objects .rbxl كمرجع، يشرح هذا الدليل كيف تؤثر القوى الفيزيائية على الحركة الخطية في الاستوديو، ويظهر لك تقنيات مختلفة لتحريك الكائنات من النقطة A إلى النقطة B في تجاربك بسلوكيات حركة مختلفة، بما في ذلك الإرشادات حول:
- استخدام قيود LinearVelocity لتحريك مجموعة كاملة بسرعة خطية ثابتة.
- استخدام PrismaticConstraint لتقييد مجموعة لغاية محور واحد وتحريكها بسرعة خطية ثابتة بالنسبة لنقطة في الفضاء ثلاثي الأبعاد.
- استخدام طريقة ApplyImpulse لتحريك مجموعة باندفاع أولي من القوة بحيث تتباطأ المجموعة ببطء مع مرور الوقت.
الحركة الخطية والقوى الفيزيائية
Roblox Studio هو محرك محاكاة واقعي يحاكي السلوك الفيزيائي في الوقت الحقيقي، لذا من المهم أن يكون لديك فهم شامل لكيفية تحرك الكائنات في العالم الحقيقي باستخدام الحركة الخطية من أجل التنبؤ بكيفية سلوك الكائنات المتحركة خطيًا في تجاربك.
الحركة الخطية هي الحركة على طول محور. على سبيل المثال، عندما تكون هناك كتلة لها حركة خطية، تتحرك على طول محور معين.

لا يمكن أن توجد الحركة الخطية بدون قوى خارجية وفيزيائية تدفع أو تسحب الكائنات للتحرك. وفقًا لـ القانون الأول لنيوتن للحركة، تبقى الكائنات الثابتة ثابتة وتستمر الكائنات المتحركة في الحركة بسرعة ثابتة ما لم تؤثر عليها قوة خارجية. على سبيل المثال، تبقى الكتلة الثابتة ثابتة ما لم تدفعها قوة فيزيائية مثل الرياح للتحرك.
القوة هي مقياس لاتجاه وقوة الدفع أو السحب الفيزيائي الذي يسبب تغيير سرعة الكائنات الخطية على طول محور. يُعرف التغير في السرعة بـ التسارع. هذا المفهوم مهم بشكل خاص لكي تتحرك الكائنات في الاستوديو؛ كلما زادت القوة التي تطبقها على الكائنات، زادت سرعتها في التسارع.
هذا لأن القوة تحتاج أن تكون أكبر من أي قوى فيزيائية تدفع ضد الكائن، مثل الجاذبية أو الاحتكاك. على سبيل المثال، إذا قمت بوضع الكتلة على صفيحة معدنية، يجب أن تتجاوز القوة الفيزيائية للرياح مقدار الاحتكاك الناتج عن الصفيحة المعدنية لمواصلة تسريع الكتلة. إذا كانت قوة الرياح ليست أكبر بكثير من الاحتكاك الناتج عن الصفيحة المعدنية، فإن الكتلة تتسارع، ولكن بشكل أبطأ قليلاً من المثال السابق.

السرعة الخطية هي مقياس لحركة الكائن، أو مدى سرعة تغيير الكائن لموقعه على طول محور خلال فترة زمنية. يقيس الاستوديو السرعة الخطية وفقًا لعدد الوحدات التي يتحرك بها كائن في الثانية. الوحدات هي الوحدات الفيزيائية الأساسية في روبلوكس لقياس الطول، وكل وحدة تعادل حوالي 28 سم في العالم الحقيقي.

فهم السرعة الخطية مهم لتصميم طريقة اللعب في تجاربك لأنه يساعدك على تحديد مقدار القوة التي تحتاجها من أجل تحقيق سرعة معينة لكائناتك المتحركة. على سبيل المثال، عند رغبتك في دفع الكائنات للأعلى، من المهم أن تأخذ في اعتبارك كيفية ضبط القوة لتجاوز الجاذبية داخل البيئة بحيث تتحرك الكائنات بدقة.
تتعمق الأقسام التالية في هذه المفاهيم أثناء تعلمك كيفية تحريك الكائنات بسرعة خطية ثابتة أو أولية مع القوة اللازمة للتغلب على أي قوى فيزيائية معارضة داخل البيئة. مع مراجعتك لهذه المفاهيم الفيزيائية مع التقنيات القادمة، يمكنك التنبؤ بشكل أكثر دقة بكيفية ضبط قيم الخصائص لتحقيق أي سلوك حركة خطية مثالي في الاستوديو.
الحفاظ على سرعة خطية ثابتة
لكي تصل الكائن إلى سرعة خطية ثابتة، يحتاج إلى قوة للتغلب على أي قوى فيزيائية معارضة قد تبطئ سرعة الكائن الخطية، أو تسبب بقاء الكائن ثابتًا. على سبيل المثال، إذا كنت تريد أن يكون للكائن سرعة خطية بمقدار [0, 12, 0] في الاستوديو، تحتاج إلى كمية كافية من القوة لكي تصل الكائن وتحافظ على 12 وحدة في الثانية على طول محور Y في بيئته.
تعتمد كمية القوة اللازمة ليس فقط على القوى الفيزيائية المعاكسة داخل البيئة نفسها، مثل الجاذبية والاحتكاك، ولكن أيضًا على الكائن نفسه. على سبيل المثال، إذا كان لديك كائنين من نفس الشكل يتحركان على نفس المحور، فإن الكائن الذي يملك كمية أكبر من الكتلة يحتاج إلى مزيد من القوة لتحقيق نفس التسارع الخطي.
تستخدم الأقسام الفرعية التالية مجموعات بأشكال وأحجام مختلفة لتعليمك كيفية تحريك كائن كامل أو جزء منه بسرعات خطية ثابتة. مع تجربتك في القيم الخاصة بالخصائص المختلفة، ستتعلم كيفية تقدير الحد الأقصى من القوة التي تحتاجها للمجموعات في تجاربك الخاصة.
استخدام قيود LinearVelocity
تعتبر كائنات LinearVelocity نوعًا من قيود المحرك التي تطبق القوة على مجموعة كاملة للحفاظ على سرعة خطية ثابتة. من خلال عدم تثبيت موضع المجموعة على محور أثناء حركتها، تكون المجموعة حرة للدوران عند تصادمها مع كائنات أخرى في الفضاء ثلاثي الأبعاد. يؤدي هذا النوع من الحركة إلى سيناريوهات لعب مفاجئة تكون أكثر صعوبة للتنبؤ بالنسبة للاعبين.
لبدء تحريك المجموعة، يحتاج قيد LinearVelocity إلى معرفة:
- النقطة والاتجاه الإيجابي أو السلبي لتطبيق القوة.
- كمية الوحدات التي تريد أن تتحرك بها المجموعة في الثانية.
- الحد الأقصى من القوة التي يمكن للمحرك تطبيقها لكي تصل المجموعة إلى سرعة خطية ثابتة.
لتوضيح هذه العملية، ستقوم بتكوين ورقة زنبق مع مرفق يستشهد به قيد LinearVelocity لتحريك ورقة الزنبق بمقدار 15 وحدة في الثانية على طول محور X السلبي للعالم بسرعة خطية ثابتة.

إضافة مرفق
يمكنك تحديد النقطة لتطبيق القوة عن طريق إضافة كائن Attachment إلى المجموعة، ثم تكوين موقع المرفق في الفضاء ثلاثي الأبعاد. تضع التجربة النموذجية Moving Objects مرفقًا في مركز ورقة الزنبق بحيث يمكن للقيد تحريك الشبكة من المرفق على طول محور معين.
تتضمن الملحقات مساعدات بصرية لمساعدتك على تصور محاور حركتها. يشير السهم الأصفر إلى محور الملحق الرئيسي، بينما يشير السهم البرتقالي إلى محور الملحق الثانوي. على الرغم من عدم تأثير أي من محاور الحركة على حركة ورقة الزنبق في خطوات هذه التقنية، من المهم فهم هذه المساعدات البصرية للرجوع إليها في المستقبل لأنها يمكن أن تساعدك في تحديد سلوك مثالي لأنواع مختلفة من القيود، مثل PrismaticConstraint في التقنية التالية.

لإضافة مرفق:
في نافذة المستكشف، قم بتوسيع مجلد LinearVelocityExample، ثم قم بتوسيع النموذج الفرعي LilyPad_DIY.
قم بإدراج مرفق في شبكة Pad.
- قم بالتمرير فوق الشبكة وانقر على زر ⊕. تعرض قائمة سياقية.
- من القائمة، قم بإدراج Attachment. يظهر المرفق في مركز الجزء.
- قم بإعادة تسمية المرفق إلى MoveAttachment.

تكوين القيد
الآن بعد أن أصبح لديك نقطة ثابتة لتحريك ورقة الزنبق، يمكنك تكوين خصائص قيد LinearVelocity لتحديد الاتجاه والحجم للسرعة الخطية الثابتة، وكمية الوحدات التي تريد أن تتحرك بها الشبكة في الثانية، والحد الأقصى من القوة التي يمكن للمحرك تطبيقها لتحقيق السرعة الخطية الثابتة.
تطبق تجربة Moving Objects ما يصل إلى 5000 Rowtons من القوة الثابتة لتحريك ورقة الزنبق بمقدار 15 وحدة في الثانية على طول محور X السلبي للعالم بسرعة خطية ثابتة. تعتبر Rowtons وحدات القوة الأساسية في روبلوكس. للإشارة إلى الوحدات الفيزيائية في روبلوكس وكيفية تحويلها إلى وحدات مترية، راجع وحدات روبلوكس.
لتهيئة قيد LinearVelocity:
لجعل القيد مرئيًا في واجهة العرض بحيث يمكنك الرجوع إلى اتجاهه الخطي، قم بتمكين عرض تفاصيل القيد من قائمة عرض في الاستوديو.
قم بإدراج قيد LinearVelocity في شبكة Pad.
- في نافذة المستكشف، قم بالتمرير فوق الشبكة، ثم انقر على أيقونة ⊕. تعرض قائمة سياقية.
- من القائمة السياقية، قم بإدراج LinearVelocity.
قم بتعيين مرفق الشبكة إلى القيد الجديد.
- في نافذة المستكشف، حدد القيد.
- في نافذة الخصائص،
- قم بتعيين Attachment0 إلى MoveAttachment.
- قم بتعيين MaxForce إلى 5000 لتطبيق ما يصل إلى 5000 Rowtons من القوة الثابتة لتحقيق السرعة الخطية المستهدفة.
- احتفظ بـ RelativeTo إلى World لتحريك ورقة الزنبق بالنسبة لموقع العالم وتوجهه.
- قم بتعيين VelocityConstraint إلى Line لتقييد القوة على طول خط من المرفق.
- قم بتعيين LineDirection إلى -1, 0, 0 لتحريك ورقة الزنبق على طول محور X السلبي للعالم. لاحظ أنه إذا قمت بتعيين هذه الخاصية إلى 1, 0, 0، فإن ورقة الزنبق ستكون ستتحرك على طول محور X الإيجابي للعالم.
- قم بتعيين LineVelocity إلى 15 لتحريك ورقة الزنبق بمقدار 15 وحدة في الثانية.

تحقق من أن كمية القوة التي ضبطتها تحرك الشبكة بمقدار 15 وحدة في الثانية على طول محور X السلبي للعالم.
اختر وضع تشغيل من قائمة الانسدال في الميزان وانقر على زر تشغيل لبدء ذلك. يقوم الاستوديو بمحاكاة التجربة في موضع الكاميرا الحالي بدون وجود شخصيتك في الفضاء ثلاثي الأبعاد.

استخدام قيود PrismaticConstraint
تعتبر كائنات PrismaticConstraint نوعًا من قيود ميكانيكية التي تنشئ مفصلًا صلبًا بين ملحقين، مما يسمح لمجموعات الأبوين بالتحرك على طول محور واحد بالنسبة لبعضها البعض. من خلال تثبيت موضع المجموعتين على محور واحد، يمكن لكل مجموعة أن تدور فقط إذا كانت تدور معًا في نفس الاتجاه.
يؤدي هذا النوع من الحركة إلى سيناريوهات لعب مستقرة تكون أسهل بالنسبة للاعبين للتنبؤ. على سبيل المثال، تستخدم تجربة Moving Objects كائنات PrismaticConstraint لتحريك منصات الجذوع التي يمكن للاعبين استخدامها لعبور نهر ضخم بعناية.
عند تعيين PrismaticConstraint.ActuatorType إلى Motor، تقوم هذه القيود بتطبيق القوة على الملحقين بهدف الوصول إلى سرعة خطية ثابتة. إذا قمت بتثبيت أحد مجموعات الملحقات، تستمر القوة في تحريك المجموعة غير المثبتة بسرعة خطية ثابتة بينما تبقى المجموعة المثبتة ثابتة.
لبدء تحريك المجموعة، يحتاج قيد PrismaticConstraint إلى معرفة:
- النقطة والاتجاه الإيجابي أو السلبي لتطبيق القوة.
- كمية الوحدات التي تريد أن تتحرك بها الملحقات في الثانية.
- الحد الأقصى من القوة التي يمكن للمحرك تطبيقها لكي تصل الملحقات ومجموعاتها الأبوية إلى سرعة خطية ثابتة.
لتوضيح هذه العملية، ستقوم بتكوين مجموعة جذع مع كائنين يحتوي كل منهما على مرفقات تشير إليها PrismaticConstraint لتحريك الجذع بمقدار 40 وحدة في الثانية على طول محور X السلبي للعالم بسرعة خطية ثابتة.

تكوين الملحقات
يمكنك تحديد الاتجاه لتحريك كائن معين داخل مجموعة عن طريق إضافة كائنين Attachment إلى المجموعة، ثم تكوين محاذاتهما وتوجههما في الفضاء ثلاثي الأبعاد. تقوم تجربة Moving Objects بمحاذاة مرفقين على طول محور X للعالم بالقرب من الموقع الذي يتداخل فيه الجذع غير المثبت مع الجزء المثبت، وتوجه كل محور رئيسي للملحقات ليواجه محور X السلبي للعالم.
عند تكوين قيد PrismaticConstraint الخاص بك في القسم التالي، ستحرك الجذع بالنسبة للجزء المثبت. بعبارة أخرى، سيتحرك الجذع بعيدًا عن الجزء الثابت الذي لا يمكنه التحرك لأنه مثبت في الفضاء ثلاثي الأبعاد.
لتكوين الملحقات لقيد prismatic:
في نافذة المستكشف، قم بتوسيع مجلد PrismaticConstraintExample، ثم قم بتوسيع النموذج الفرعي Log_DIY.
قم بإدراج مرفق في شبكة Log.
- قم بالتمرير فوق الشبكة وانقر على زر ⊕. تعرض قائمة سياقية.
- من القائمة، قم بإدراج Attachment. يظهر المرفق في مركز الجزء.
- قم بإعادة تسمية المرفق إلى LogAttachment.

باستخدام نفس العملية، قم بإدراج مرفق في الجزء Anchor، ثم أعد تسمية المرفق إلى AnchorAttachment.

باستخدام أداة View Selector كمرجع لإحداثيات العالم، قم بتدوير LogAttachment وAnchorAttachment حتى يتجه كل محور رئيسي لكلا الملحقين إلى محور X السلبي للعالم.

أعد وضع AnchorAttachment بحيث تتماشى الملحقات على محور X للعالم.

تكوين القيد
الآن بعد أن أصبحت الملحقات في مواضع متوازية وتتجه في نفس الاتجاه الذي تريده لتحريك الجذع، يمكنك تكوين خصائص قيد PrismaticConstraint لتحديد ما إذا كان يجب تطبيق السرعة الخطية الثابتة المستهدفة في الاتجاه الإيجابي أو السلبي لكل محور رئيسي للملحقات، وكمية الوحدات التي تريد أن تتحرك بها الملحقات في الثانية، والحد الأقصى من القوة التي يمكن للمحرك تطبيقها للجذع لتحقيق سرعة خطية ثابتة.
بينما يمكنك اختيار قيم مختلفة لحالات الاستخدام الخاصة بك، تطبق تجربة Moving Objects ما يصل إلى 50000 Rowtons من القوة الثابتة لتحريك الملحقات بمقدار 40 وحدة في الثانية على طول محور X السلبي للعالم بسرعة خطية ثابتة. ومع ذلك، لأن المرفق المثبت موجود في كائن مثبّت، يمكن أن يتحرك فقط مرفق الجذع.
لتكوين قيد برزمي:
قم بإدراج كائن PrismaticConstraint في شبكة Log.
- في نافذة المستكشف، قم بالتمرير فوق الشبكة، ثم انقر على أيقونة ⊕. تعرض قائمة سياقية.
- من القائمة السياقية، قم بإدراج PrismaticConstraint.
قم بتعيين ملحقات الجذع إلى القيد الجديد بحيث يتحرك الجذع في العلاقة بـ الجزء الثابت.
- في نافذة المستكشف، حدد القيد.
- في نافذة الخصائص،
- قم بتعيين Attachment0 إلى AnchorAttachment.
- قم بتعيين Attachment1 إلى LogAttachment. يظهر القيد في واجهة العرض.

في نافذة المستكشف، حدد القيد، ثم في نافذة الخصائص:
- قم بتعيين ActuatorType إلى Motor. تظهر حقول خصائص جديدة.
- قم بتعيين MotorMaxForce إلى 50000 لتطبيق ما يصل إلى 50000 Rowtons من القوة الثابتة لتحقيق السرعة الخطية المستهدفة.
- قم بتعيين Velocity إلى 40 لتحريك الجذع بمقدار 40 وحدة في الثانية.

تحقق من أن كمية القوة التي ضبطتها تحرك الجذع بمقدار 40 وحدة في الثانية على طول محور X السلبي للعالم.
اختر وضع تشغيل من قائمة الانسدال في الميزان وانقر على زر تشغيل لبدء ذلك. يقوم الاستوديو بمحاكاة التجربة في موضع الكاميرا الحالي بدون وجود شخصيتك في الفضاء ثلاثي الأبعاد.

تطبيق قوة خطية أولية
طريقة أخرى لتغيير السرعة الخطية لكائن هي بتطبيق اندفاع من القوة. بعد الاندفاع من القوة، يمكن أن يتباطأ الكائن حتى يصبح ثابتًا إذا كانت هناك قوة معارضة مثل الاحتكاك، أو يبقى في حركة بسرعة خطية ثابتة إذا لم تكن هناك قوى معارضة.
هذه التقنية مفيدة لتحريك الكائنات بعد حدث كبير في اللعبة، مثل انفجار أو تصادم مؤثر، لأنها توفر للاعبين استجابة فورية. لتوضيح ذلك، يعلمك القسم التالي كيفية إطلاق شخصية اللاعب نحو السماء عندما تصطدم بوسادة قفز بتطبيق اندفاع أولي يمكنك ضبطه باستخدام قيم جديدة لتلبية متطلبات طريقة لعبك الخاصة.
استخدام ApplyImpulse
تطبق طريقة ApplyImpulse القوة على مجموعة كاملة للحصول على سرعة خطية أولية قبل أن تتباطأ حتى تتوقف عندما توجد قوى معارضة. لبدء تحريك المجموعة، تحتاج الطريقة إلى معرفة:
- المجموعة التي سيتم تحريكها.
- المحور الذي ستطبق عليه القوة للوصول إلى سرعة خطية أولية.
- كمية القوة التي يتم تطبيقها على كل محور.
يمكنك تعريف كل هذه القيم في نص برمجي. على سبيل المثال، يحدد النص النموذجي المجموعة المراد تحريكها على أنها كائن Humanoid للشخصية اللاعب، ثم يطبق اندفاعا من القوة بمقدار 2500 Rowton-ثانية لإطلاق اللاعب للأعلى على محور Y الإيجابي للعالم. لاحظ أن شخصيات اللاعبين لها كتل مختلفة، لذا قد تحتاج إلى زيادة وتوازن هذه القوة لإطلاق كل لاعب دون إطلاق شخصيات اللاعبين ذوي الكتل الأصغر بشكل مرتفع جدًا.
لتحريك مجموعة باستخدام ApplyImpulse:
في نافذة المستكشف، قم بتوسيع مجلد ApplyImpulseExample، ثم قم بتوسيع النموذج الفرعي JumpPad_DIY.
أدخل نصًا برمجيًا في الجزء JumpPad.
- قم بالتمرير فوق الجزء وانقر على زر ⊕. تعرض قائمة سياقية.
- من القائمة، قم بإدراج Script. يظهر النص في مركز الجزء.
- قم بإعادة تسمية النص إلى JumpScript.
استبدل الشيفرة الافتراضية بالشيفرة التالية:
local volume = script.Parentlocal function onTouched(other)local impulse = Vector3.new(0, 2500, 0)local character = other.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and other.Name == "LeftFoot" thenother:ApplyImpulse(impulse)endendvolume.Touched:Connect(onTouched)