برنامج Unity Cinemachine والجدول الزمني التعليمي

Cinemachine عبارة عن حزمة لـ Unity تمنح المطورين تحكمًا احترافيًا في الكاميرا وتعزز القدرة على إنشاء مشاهد سينمائية.

سيغطي هذا البرنامج التعليمي المواضيع التالية:

  • تركيب السينما
  • إعداد كاميرا الشخص الثالث
  • إنشاء مشهد الخط الزمني

تركيب السينما

لتثبيت Cinemachine، اتبع الخطوات التالية:

  • في Unity انتقل إلى Window -> Package Manager

قائمة مدير حزمة الوحدة

  • تغيير الحزم إلى "Unity التسجيل"

سجل مدير حزمة الوحدة

  • حدد "Cinemachine" من القائمة ثم انقر "Install"

جهاز السينما جاهز الآن للاستخدام.

إعداد كاميرا الشخص الثالث

سأوضح أدناه كيفية إعداد كاميرا من منظور شخص ثالث باستخدام الكاميرا الافتراضية الخاصة بـ Cinemachine.

الكاميرا الافتراضية هي نسخة خفيفة الوزن من كاميرا Unity، ولا يتم عرضها بمفردها، ولكنها تُستخدم فقط كنقطة مرجعية للكاميرا الرئيسية.

كمثال لهذا البرنامج التعليمي، سأستخدم وحدة تحكم من منظور الشخص الثالث، باستثناء عدم إعداد تصادم الكاميرا ودون تحريك الكاميرا داخل التسلسل الهرمي للمشغل:

Sharp Coder مشغل فديوهات

كما ترون اللاعب يتحرك ولكن الكاميرا لا تتبعه.

يعد إعداد كاميرا منظور الشخص الثالث باستخدام Cinemachine أمرًا سهلاً للغاية:

  • انتقل إلى GameObject -> Cinemachine -> Virtual Camera لإنشاء كاميرا افتراضية جديدة

يقوم Cinemachine بإنشاء كاميرا افتراضية

  • قم بتسمية الكاميرا الافتراضية "TPS Camera"
  • حدد كاميرا TPS وفي CinemachineVirtualCamera قم بتعيين متغير المتابعة (في حالتي سيكون كائن "CameraParent"، والذي يقع داخل التسلسل الهرمي للمشغل ويمثل دوران المظهر الرأسي)
  • اضبط قيمة الجسم على "3rd Person Follow"
  • قم بتعيين تجاهل العلامة على "Player" وحدد أيضًا كائن جذر المشغل وقم بتعيين علامته على "Player" (إذا كان هناك أي مصادمات فرعية في التسلسل الهرمي للمشغل، فتأكد من تغيير علاماتها إلى "Player" أيضًا)
  • قم بتعديل القيم الأخرى في CinemachineVirtualCamera مثل مسافة الكاميرا، وجانب الكاميرا، وإزاحة الكتف، والتخميد حتى تشعر بالرضا عن النتيجة.
  • قم بتعيين قيمة الهدف لـ CameraParent على "Do nothing"

قيم مكونات CinemachineVirtualCamera

يجب أن تتبع الكاميرا الآن اللاعب:

Sharp Coder مشغل فديوهات

إنشاء مشهد الخط الزمني

سأوضح هنا كيفية إنشاء مشهد سينمائي باستخدام Unity's Timeline.

الجدول الزمني هو محرر مدمج يمكّن المطورين من إنشاء مشاهد من خلال تحريك الكاميرا، وكذلك باستخدام الرسوم المتحركة الموجودة (مثل مشي الشخصية)، بالإضافة إلى الأحداث والإشارات من خلال ترتيبها بطريقة تسلسلية.

تضيف حزمة Cinemachine بعض الخيارات الإضافية إلى محرر الجدول الزمني، مثل القدرة على التبديل بين الكاميرات الافتراضية.

لإنشاء مشهد مقطعي، اتبع الخطوات التالية:

  • قم بإنشاء GameObject جديد وقم بتسميته "TimelineManager"
  • افتح نافذة الجدول الزمني بالانتقال إلى نافذة -> التسلسل -> الجدول الزمني

قائمة الجدول الزمني لتسلسل نافذة الوحدة

  • حدد "TimelineManager" Object وفي نافذة Timeline، يجب أن ترى خيارًا لإنشاء مكون Director وأصل Timeline، انقر فوقه.

يقوم Cinemachine بإنشاء مكون المخرج وأصل الجدول الزمني

  • بعد إنشاء مكون المخرج وأصل المخطط الزمني، يجب أن تشاهد نافذة المخطط الزمني الفارغة (تأكد من تحديد كائن TimelineManager لتتمكن من تحريره).

نافذة الخط الزمني لآلة السينما

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

إنشاء مكونات الجدول الزمني

كما ترون، تحتوي نافذة الجدول الزمني على خيارات مختلفة:

  • مجموعة المسار - هذه مجموعة يمكن أن تحتوي على إجراءات الجدول الزمني وهي مفيدة للتنظيم.
  • مسار التنشيط - يحدد الكائن الذي يجب أن يكون نشطًا فقط خلال إطار زمني محدد.
  • مسار الرسوم المتحركة - سيؤدي هذا إلى تشغيل رسم متحرك محدد خلال إطار زمني محدد.
  • المسار الصوتي - سيؤدي هذا إلى تشغيل صوت محدد خلال إطار زمني محدد.
  • مسار التحكم - مسار تتحكم مقاطعه في العناصر المرتبطة بالوقت في GameObject.
  • مسار الإشارة - يسمح هذا بتنفيذ مجموعة واسعة من الإجراءات على كائن لعبة معين في وقت محدد (على سبيل المثال، تنشيط البرنامج النصي لحركة اللاعب أو استدعاء وظيفة محددة عندما يصل المخطط الزمني إلى إطار معين، وما إلى ذلك)
  • المسار القابل للتشغيل - مسار تكون مقاطعه قابلة للتشغيل بشكل مخصص.
  • Cinemachine Track - يسمح هذا بالدمج بين العديد من الكاميرات الافتراضية الخاصة بالسينماشين.

لغرض هذا البرنامج التعليمي، سأستخدم فقط Animation Track و Signal Track.

يثبت

  • أنشئ كاميرا افتراضية أخرى وسمها "CutsceneCamera" واضبط قيمتها "Priority" على مستوى واحد أعلى من "TPS Camera" (مثال 11)
  • انقر بزر الماوس الأيمن في عرض المشروع -> إنشاء -> سيجنال وقم بتسميته "DisablePlayer"

الوحدة إنشاء إشارة الجدول الزمني

  • قم بتكرار الإشارة "DisablePlayer" وأعد تسميتها إلى "EnablePlayer"

أصول إشارة الجدول الزمني للوحدة

  • قم بإنشاء GameObject جديد في المشهد وقم بتسميته "SignalReceiver"
  • قم بإرفاق مكون SignalReceiver بكائن "SignalReceiver"
  • انقر على "Add Reaction" مرتين
  • قم بتعيين "DisablePlayer" للتفاعل الأول و "EnablePlayer" للتفاعل الثاني

إشارة الجدول الزمني للوحدة أضف رد فعل

"DisablePlayer" سيتم تنشيط كاميرا المشهد، وإلغاء تنشيط كاميرا المشغل وبرنامج التحكم في اللاعب، وسيتم وضعها في بداية المخطط الزمني.

"EnablePlayer" سيتم إلغاء تنشيط كاميرا المشهد، وتنشيط كاميرا المشغل وبرنامج التحكم في اللاعب، وسيتم وضعها في نهاية المخطط الزمني.

  • انقر فوق (+) لإضافة فتحة رد فعل ثم قم بتعيين الكائن الذي يلزم تنشيط/إلغاء تنشيط البرنامج النصي أو المكون الخاص به.

نصيحة: لإنشاء إشارة معاكسة، يمكنك فقط إعداد التفاعلات لـ "DisablePlayer" ثم النقر على أيقونة الترس -> تكرار، وتغيير الإشارة إلى "EnablePlayer" وعكس مربعات الاختيار.

الوحدة مكررة الإشارة

إعداد ردود أفعال إشارة الجدول الزمني للوحدة

  • حدد كائن "TimelineManager" ثم في نافذة الجدول الزمني أضف مسار إشارة جديدًا بالنقر بزر الماوس الأيمن -> مسار الإشارة ثم قم بتعيين كائن "SignalReceiver" إليه.
  • قم بسحب وإسقاط أصل الإشارة "DisablePlayer" في بداية المخطط الزمني و"EnablePlayer" إلى الإطار الذي تريد أن ينتهي فيه المشهد:

معاينة إشارة الخط الزمني للوحدة

سيؤدي هذا إلى إلغاء تنشيط البرنامج النصي لوحدة التحكم في المشغل والكاميرا في البداية ثم إعادة تنشيطهما بمجرد وصول المخطط الزمني إلى النهاية.

وأخيرًا، سنقوم بإنشاء رسوم متحركة بسيطة بالكاميرا.

  • انقر بزر الماوس الأيمن على الجدول الزمني -> مسار الرسوم المتحركة ثم قم بتعيين "CutsceneCamera" (سيطلب هذا إضافة مكون Animator إلى الكائن إذا لم يكن هناك أي شيء)
  • انقر فوق زر التسجيل

سجل مقطع الرسوم المتحركة للخط الزمني للوحدة

  • حرك "CutsceneCamera" قليلاً، بحيث يتم تطبيق الإطار الرئيسي ثم حرك مقبض الإطار الزمني إلى النهاية، وأخيرًا، حرك الكاميرا إلى موضع جديد ثم انقر فوق إيقاف التسجيل.

Unity Cinemachine Cutscene الجدول الزمني

لنضغط على زر التشغيل ونرى النتيجة:

Sharp Coder مشغل فديوهات

يتم لعب المشهد في بداية اللعبة.

المقالات المقترحة
كيفية رسم الأشجار على التضاريس في الوحدة
كيفية استيراد الرسوم المتحركة إلى الوحدة
كيفية إنشاء لعبة مستوحاة من FNAF في Unity
الجيل العالمي الإجرائي في الوحدة
بناء نظام القائمة التفاعلية في الوحدة
الوحدة تعمل مع المباني الجاهزة
Unity Mecanim كيفية تشغيل الرسوم المتحركة على Keypress