الكائنات الدوارة هي كائنات تدور حول محور أو أكثر داخل الفضاء ثلاثي الأبعاد. باستخدام القوة المدمجة لمحرك محاكاة Roblox، يمكنك جعل الكائنات تدور وتتفاعل مع بيئتها بطريقة تحاكي سلوكيات فيزيائية في العالم الحقيقي تكون مألوفة وبديهية للاعبين، مثل الجاذبية، والديناميكا الهوائية، والاحتكاك.
باستخدام ملف الكائنات الدوارة .rbxl كمرجع، يشرح هذا الدليل كيف تؤثر القوى الفيزيائية على الحركة الزاوية في الاستوديو، ويظهر لك تقنيات مختلفة لجعل الكائنات تدور في ألعابك بسلوكيات دوران مختلفة، بما في ذلك الإرشادات حول:
- استخدام قيد AngularVelocity لتحريك مجموعة كاملة بسرعة زاوية ثابتة.
- استخدام قيد HingeConstraint لتحريك جزء داخل مجموعة بسرعة زاوية ثابتة بينما تبقى بقية المجموعة ثابتة.
- استخدام طريقة ApplyAngularImpulse لجعل مجموعة تدور بدفعة أولية من القوة الزاوية بحيث تتباطأ المجموعة ببطء مع مرور الوقت.
الحركة الزاوية والقوى الفيزيائية
Roblox Studio هو محرك محاكاة للعالم الحقيقي يحاكي السلوك الفيزيائي في الوقت الحقيقي، لذا من المهم أن يكون لديك فهم عام لكيفية دوران الكائنات في الحياة الواقعية مع الحركة الزاوية من أجل التنبؤ بسلوك الكائنات الدوارة في الألعاب.
الحركة الزاوية، أو الحركة الدورانية، هي الحركة حول نقطة ثابتة أو محور. على سبيل المثال، عندما يكون للمروحة حركة زاوية، فإنها تدور حول محور الدوران في وسط المروحة.

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

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

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

لإضافة مرفق:
في نافذة Explorer، أدخل جزء كتلة في Workspace.

أدخل مرفقًا في الجزء الجديد.
- في نافذة Explorer، مرر فوق الجزء وانقر على زر ⊕. تظهر قائمة سياقية.
- من القائمة، أدخل Attachment. يظهر المرفق في مركز الجزء.
- أعد تسمية المرفق إلى SpinAttachment.

تكوين القيد
الآن بعد أن أصبح لكتلتك نقطة ثابتة للدوران، يمكنك تكوين خصائص قيد AngularVelocity لتحديد الاتجاه الدوراني، والمحور أو المحاور لتطبيق سرعة زاوية ثابتة مستهدفة، ومقدار الراديان الذي تريد أن تدور به الكتلة في الثانية، والحد الأقصى من العزم الذي يمكن أن يطبقه المحرك لكي تصل الكتلة إلى سرعة زاوية ثابتة.
تطبق لعبة الكائنات الدوارة ما يصل إلى 1000 وحدة Rowton من القوة الزاوية الثابتة لدوران الكتلة 6 راديان في الثانية على المحور Y للعالم بسرعة زاوية ثابتة. وحدات Rowton هي وحدات Roblox الأساسية لقياس العزم. للإشارة إلى وحدات Roblox الفيزيائية وكيفية تحويلها إلى وحدات متري، راجع وحدات Roblox.
لتكوين قيد AngularVelocity:
لجعل القيد مرئيًا في واجهة العرض حتى تتمكن من الإشارة إلى اتجاهه الدوراني، قم بتمكين إظهار تفاصيل القيد من قائمة عرض في الاستوديو.
أدخل قيد AngularVelocity في الجزء.
- في نافذة Explorer، مرر فوق الجزء، ثم انقر على أيقونة ⊕. تظهر قائمة سياقية.
- من القائمة السياقية، أدخل AngularVelocity. تظهر وسيلة القيد البصرية في منتصف الجزء.
قم بتعيين مرفق الجزء إلى القيد الجديد.
- في نافذة Explorer، حدد القيد.
- في نافذة الخصائص،
- قم بتعيين Attachment0 إلى SpinAttachment.
- قم بتعيين AngularVelocity إلى 0, 6, 0 لجعل الجزء يدور 6 راديان في الثانية على المحور Y. لاحظ أنه إذا قمت بتعيين هذه الخاصية إلى 0, -6, 0، فإن الكتلة ستدور في اتجاه عقارب الساعة.
- قم بتعيين MaxTorque إلى 1000 لتطبيق ما يصل إلى 1000 وحدة Rowton من القوة الزاوية الثابتة في الثانية لتحقيق السرعة الزاوية المستهدفة.
- احتفظ بـ RelativeTo على World لجعل الكتلة تدور بالنسبة لموقع العالم واتجاهه.

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

قد تحتاج إلى ضبط العزم الخاص بك اعتمادًا على مقياس الكتلة الخاصة بك وأي قوى فيزيائية معارضة في بيئتك. على سبيل المثال، تعمل خصائص قيد AngularVelocity في اللعبة النموذجية مع جزء كتلة بحجم افتراضي قدره 4, 1, 2 على منصة مسطحة مع مادة بلاستيكية، وبيئة ذات جاذبية افتراضية كلاسيكية.
ومع ذلك، إذا كانت كتلتك بحجم أكبر وعلى أرض عشبية، تحتاج إلى زيادة خاصية AngularVelocity.MaxTorque الخاصة بك لأن القوة الزاوية تحتاج إلى التغلب على كل من كتلة الكتلة والاحتكاك من البيئة. على سبيل المثال، تحتاج الكتلة الكبيرة التي هي أربعة أضعاف حجم الجزء النموذجي إلى ما لا يقل عن 300000 وحدة Rowton من القوة الزاوية الثابتة لتحقيق السرعة الزاوية المحددة!
استخدام قيود HingeConstraint
تعتبر كائنات HingeConstraint نوعًا من القيود الميكانيكية التي تسمح لمرفقين بالدوران حول محور واحد، مما يقيد المرفقات إلى نفس الموضع ومحاورها الرئيسية في نفس الاتجاه. عندما تقوم بتعيين HingeConstraint.ActuatorType إلى Motor، يقوم هذا القيد بتطبيق العزم على المرفقين بهدف وصول المرفقات إلى سرعة زاوية ثابتة والحفاظ عليها.
علاوة على ذلك، عندما تضع مرفقات في مجموعة تحتوي على كائنين، يتم قفل الكائنات معًا وتحاول الدوران معًا وفقًا لمحور المرفق الثابت. إذا قمت بتثبيت أحد هذه الكائنات، تستمر القوة الزاوية في دوران الكائن الآخر بسرعة زاوية ثابتة بينما تبقى بقية المجموعة ثابتة.
على سبيل المثال، لبدء دوران كائن معين داخل مجموعة، يحتاج قيد HingeConstraint إلى معرفة:
- الموضع الذي تريد أن تتداخل فيه المرفقات.
- النقطة والاتجاه الإيجابي أو السلبي لتطبيق قوة زاوية.
- مقدار الراديان الذي تريد أن يدور به المرفق في الثانية.
- الحد الأقصى من العزم الذي يمكن أن يطبقه المحرك لكي يصل المرفق إلى سرعة زاوية ثابتة.
لتوضيح هذه العملية، ستضيف مجموعة مروحة تحتوي على كائنين إلى مساحة العمل الخاصة بك مع مرفقات في كلا الكائنين التي يشير إليها قيد HingeConstraint لدوران المروحة 3 راديان في الثانية (حوالي نصف دورة كاملة في الثانية) على المحور Y بسرعة زاوية ثابتة بينما يبقى قاعدة المروحة ثابتة.

الحصول على أصل المروحة
تعتبر متجر المبدعين علامة تبويب في صندوق الأدوات يمكنك استخدامها للعثور على جميع الأصول التي أنشأها Roblox ومجتمع Roblox للاستخدام في مشاريعك، بما في ذلك نماذج، وصور، وشبكات، وصوتيات، وإضافات، ومقاطع فيديو، وأصول خطوط. يمكنك استخدام متجر المبدعين لإضافة أصل فردي أو مكتبة أصول مباشرة إلى لعبة مفتوحة.
يشير هذا الدليل إلى نموذج مروحة يمكنك استخدامه أثناء تكرار كل خطوة من تقنية HingeConstraint لدوران الكائنات. للحصول على أصل المروحة هذا من مخزونك إلى لعبتك:
أضف المروحة إلى مخزونك.
- انتقل إلى صفحة تفاصيل الأصل على متجر المبدعين.
- في الزاوية العلوية اليمنى، انقر على زر الحصول على النموذج. أصبح أصل المروحة الآن في مخزونك، ويمكنك إعادة استخدامه في أي مشروع على المنصة.
في الاستوديو، انتقل إلى علامة التبويب الرئيسية، ثم انقر على زر صندوق الأدوات. تفتح نافذة صندوق الأدوات.

في نافذة صندوق الأدوات، انقر على علامة التبويب المخزون. تظهر مجموعة نماذجي الخاصة بي.

انقر على بلاطة المروحة. يظهر النموذج في واجهة العرض الخاصة بك.

تكوين المرفقات
يمكنك تحديد كل من موضع تداخل المرفقات والاتجاه للحركة الدورانية لدوران كائن معين داخل مجموعة عن طريق إضافة كائنين Attachment إلى المجموعة، ثم تكوين محاذاتهما وتوجههما في الفضاء ثلاثي الأبعاد.
تقوم لعبة الكائنات الدوارة بمحاذاة مرفقين بالقرب من الموضع الذي تتداخل فيه المروحة غير المثبتة مع القاعدة المثبتة، وتوجه محور الدوران الرئيسي لأعلى بحيث تدور عكس اتجاه عقارب الساعة. لا يمكن للمرفق الأساسي أن يدور في هذا المثال لأن القاعدة مثبتة.
لتكوين المرفقات لقيد المفصلة:
أدخل كائن Attachment في الرأس والقاعدة.
- في نافذة Explorer، مرر فوق الرأس وانقر على زر ⊕. تظهر قائمة سياقية.
- من القائمة، أدخل Attachment.
- كرر هذه العملية لـ القاعدة.
- أعد تسمية كلا المرفقين إلى HeadAttachment وBaseAttachment، على التوالي.

قم بتدوير HeadAttachment وBaseAttachment بحيث يشير المحور الرئيسي لكل مرفق لأعلى على المحور Y. هذا يخبر الاستوديو بتدوير المرفقات عكس اتجاه عقارب الساعة.

انقل BaseAttachment إلى أعلى القاعدة، وHeadAttachment إلى الحافة السفلية لـ المروحة. هذا يخبر الاستوديو بمكان توصيل المفصلة نفسها، وتداخل كلا المرفقين في وقت التشغيل.

تكوين القيد
الآن بعد أن أصبحت مرفقاتك لها موضع للتداخل واتجاه للحركة الدورانية، يمكنك تكوين خصائص قيد HingeConstraint لتحديد مقدار الراديان الذي تريد أن يدور به المرفق في الثانية، والحد الأقصى من العزم الذي يمكن أن يطبقه المحرك لكي يصل المرفق إلى سرعة زاوية ثابتة.
على غرار التقنية السابقة، تطبق لعبة الكائنات الدوارة ما يصل إلى 1000 وحدة Rowton من القوة الزاوية الثابتة لدوران المرفق 3 راديان في الثانية على المحور Y بسرعة زاوية ثابتة. ومع ذلك، نظرًا لأن المرفق الأساسي موجود في كائن مثبت، يمكن فقط لمرفق المروحة أن يدور.
لتكوين قيد المفصلة:
أدخل كائن HingeConstraint في الرأس.
- في نافذة Explorer، مرر فوق الرأس، ثم انقر على أيقونة ⊕. تظهر قائمة سياقية.
- من القائمة السياقية، أدخل HingeConstraint.
قم بتعيين مرفقات المروحة إلى القيد الجديد بحيث تدور المروحة في علاقة مع القاعدة المثبتة.
- في نافذة Explorer، حدد القيد.
- في نافذة الخصائص،
- قم بتعيين Attachment0 إلى BaseAttachment.
- قم بتعيين Attachment1 إلى HeadAttachment. تظهر المفصلة في واجهة العرض.

في نافذة Explorer، حدد القيد، ثم في نافذة الخصائص،
- قم بتعيين ActuatorType إلى Motor. تظهر حقول خصائص جديدة.
- قم بتعيين MotorMaxTorque إلى 1000 لتطبيق ما يصل إلى 1000 وحدة Rowton من القوة الزاوية الثابتة لتحقيق السرعة الزاوية المستهدفة.
- قم بتعيين AngularVelocity إلى 3 لجعل رأس المروحة يدور 3 راديان في الثانية.

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

تطبيق قوة زاوية أولية
طريقة أخرى لتغيير سرعة الكائن الزاوية هي من خلال تطبيق دفعة من القوة الزاوية. بعد دفعة القوة الزاوية، إما أن يتباطأ الكائن حتى يصبح ثابتًا إذا كانت هناك قوة معارضة مثل الاحتكاك، أو يبقى في حركة بسرعة ثابتة إذا لم تكن هناك أي قوى معارضة.
تكون هذه التقنية مفيدة لجعل الكائنات تدور بعد حدث كبير في طريقة اللعب أو حدث جوي، مثل هبة قوية من الرياح، لأنها توفر للاعبين ردود فعل فورية. لتوضيح ذلك، تعلمك القسم الفرعي التالي كيفية جعل مجموعة تدور بدفعة زاوية عشوائية أولية يمكنك تعديلها بقيم جديدة لتلبية متطلبات طريقة اللعب الخاصة بك.
استخدام ApplyAngularImpulse
تطبق طريقة ApplyAngularImpulse العزم على مجموعة كاملة للحصول على سرعة زاوية أولية قبل التباطؤ إلى التوقف. لبدء دوران المجموعة، تحتاج الطريقة إلى معرفة:
- المجموعة التي تريد أن تدور.
- المحور الذي تريد تطبيق العزم عليه للوصول إلى سرعة زاوية أولية.
- مقدار العزم الذي تريد تطبيقه على كل محور.
يمكنك تعريف كل هذه القيم في نص برمجي. على سبيل المثال، يعرف النص البرمجي النموذجي المجموعة التي ستدور كوالد النص البرمجي، ثم يطبق دفعة عشوائية من القوة الزاوية بين 0 و 100 وحدة Rowton على المحور Y.
لجعل مجموعة تدور باستخدام ApplyAngularImpulse:
أدخل جزء كرة في Workspace. يستخدم النموذج كرة مع MaterialVariant حتى تتمكن من تصور حركة الكرة بوضوح.

أدخل نصًا برمجيًا في الجزء الجديد.
- في نافذة Explorer، مرر فوق الجزء وانقر على زر ⊕. تظهر قائمة سياقية.
- من القائمة، أدخل Script.
استبدل الكود الافتراضي بالكود التالي:
local part = script.Parent
local impulse = Vector3.new(0, math.random(0, 100), 0)
part:ApplyAngularImpulse(impulse)