Rigidbody-in-unity

هل تعلم لماذا يستخدم Rigidbody في يونتي، وما هي أنواعه؟

Rigidbody هو واحد من أهم المكونات (component) في محرك الألعاب يونتي، ولكن كيف يعمل؟ وماهي الأنواع المختلفة له وما الفرق بينها؟

في البداية وقبل الدخول في الموضوع، يجب أن نعرف بعض المفاهيم الأساسية التي تتعلق بهذا الموضوع.

ما المقصود بمصطلح (Game Object) وما العلاقة بينه وبين (Rigidbody )

Game Object

يوصف (Game Object) بأنه الصف (Class) الأساسي لكل شيء موجود في المشهد/ المشاهد (Scenes) داخل محرك يونتي، ولكن ما معنى هذا الكلام.

الفكرة تكمن في أن كل ما هو موجود في المشهد وليس في اللعبة كلها هو (Game Object).

هذا التعريف البسيط من الممكن أن يكون غير كاف، لذلك دعني اعرفه لك بطريقة أخرى.

هو عبارة عن حاوية لها مكان من الفراغ، وزاوية دوران وحجم معين، ويمكن التحكم بكل من المكان والدوران وحتى الحجم عن طريق (Transform) الموجود في واجهة (Inspector)، ويمكننا إضافة ميزات ل (Game Object) عن طريق إضافة (components) له.

Transform

يمكنك معرفة المزيد عن برمجة الألعاب باستخدام يونتي من خلال الإطلاع على هذه المقالة.

ونتذكر جيداً القانون الذي يقول :

كل شيء في يونتي هو عبارة عن (Game Object)

فعندما نريد مثلاً أن نصنع طائراً في لعبتنا، سوف نقوم بالطبع أولاً بإنشاء (Game Object) فارغ من خلال الضغط على (Create) ثم نختار (Create Empty)، بعدها نحتاج إلى صورة للطائر، لكي نربطها مع الكائن الذي أنشئناه.

يمكننا إنشاء الصورة عن طريق رسم الطائر في برنامج (Photoshop) ثم استيراد الصورة إلى يونتي كعبارة عن (Assets)، بعدها وحتى نحقق الربط الذي تحدثنا عنه لابد من إضافة مكون(component) إلى (Game Object) الذي قمنا بإنشائه مسبقاً، حتى نستطيع تنفيذ عملية الربط، ولكن دعني أولاً اخبرك قليلاً عن (components) ثم نعود إلى الطائر .

ما هي components ؟

يمكنك التفكير ب (components ) على انها ما نقوم بإضافته لل (Game Object) من أجل إعطاءه خواص جديدة، لم يكن يمتلكها من قبل.

وبالعودة إلى مثال الطائر، فأننا وحتى نحقق الربط بين صورة الطائر و (Game Object) الذي أنشئناه، نحتاج إلى إضافة (component) يدعى (Sprite Renderer) إلى (Game Object)، ومن أجل إضافته، كل ما علينا فعله هو البحث عن (Render) في قائمة (component)، ثم نقوم بإختيار (Sprite Renderer).

Sprite Renderer

نقوم بإضافة الصورة إلى (Sprite Renderer) عن طريق عملية بسيطة جداً ألا وهي السحب والإفلات.

والآن، دعنا ننتقل للحديث عن العلاقة بين (Game Object) و (Rigidbody).

(Rigidbody) هو واحد من (components) التي يمكننا إضافتها إلى (Game Object)، وعندها وحتى بدون إضافة أي تعليمات برمجية (Scripts)، سوف يصبح (Game Object) يتأثر بالجاذبية، ويمتلك خواص فيزيائية أخرى مثل الكتلة.

أما في ما يخص موضوع التصادم فهذا يتطلب إضافة (Collider) مناسب أولاً.

ما هي أنواع (Rigidbody) وما الفرق بينها

يوجد نوعان أساسيان ألا وهما (Rigidbody) , (Rigidbody2D) فالأول يستخدم في حالة الألعاب ثلاثية البعد (3D) أما الثاني يستخدم في حالة الألعاب ثنائية البعد (2D).

لكن الأنواع الثلاثة الخاص بمكون (Rigidbody) والتي أريد أن اركز عليها، هي أنواع خاصية (Body Type) التي يمتلكها (Rigidbody) وهي:

  1. Static : في هذا النوع، لا يتاثر (Game Object) الذي يمتلكه بالجاذبية، وكما لا يتصادم مع أي من الأجسام الأخرى، بغض النظر عن نوعها، لذلك وفي حال استخدمته في لعبتك، فمن الأفضل أن تستخدمه مع الأجسام التي لا تريد تحريكها، ولنقل مثلاً الأشجار أو الجدران أو أي جسم لن تحتاج إلى تحريكه، وذلك بهدف تجنب أي سلوك غير متوقع من قبل (Game Object) الذي يمتلكه.
  2. Kinematic : أما في هذا النوع، فأن (Game Object) الذي يمتلكه لن يتأثر بالجاذبية، ولكن سوف يتصادم مع أي (Game Object) يحمل (Rigidbody) من نوع (Dynamic)، أما (Static) و (Kinematic) فلن يتصادم معهما، وفي حال تصادمه مع (Dynamic) فأنه يستطيع تحريكه والعكس ليس صحيحاً.
  3. Dynamic : هذا النوع يتأثر بالجاذبية، ويتصادم مع كل الأنواع الثلاث، ولكنه لا يستطيع تحريك (Kinematic)، أما العكس فهو صحيح. لا تقل لي أنك اعتقدت أنني اقصد بقولي يتصادم مع كل الأنواع، انه يستطيع تحريك (Static)، لأن هذا غير صحيح فهو لا يستطيع تحريك (Kinematic) أو (Static)، حيث أن (Static) كما ذكرت لن يتحرك كنتيجة لإصطدام أي قوة به مهما كانت.
Body Typeالتأثر بالجاذبيةمع أي نوع يمكنه التصادمأي نوع هو قادر على تحريكه
Staticلا يتأثرولا نوعولا نوع
Kinematicلا يتأثر DynamicDynamic
Dynamicيتأثر مع كل الأنواع الثلاثDynamic

الخلاصة

وهكذا نكون قد وصلنا إلى نهاية هذه المقالة والتي تحدثنا فيها عن (Rigidbody) والأنواع الثلاثة الأساسية الخاص بخاصية (BodyType) الموجودة لديه، وكما تحدثنا عن (Game Object) و(Components) لكي نكامل الأفكار مع بعضها.

لا تنسى أن تخبرني برأيك في التعليقات، دمت بخير.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *