Unity Mecanim كيفية تشغيل الرسوم المتحركة على Keypress

Mecanim هي أداة تعتمد على الحالة لـ Unity والتي تمنح المطورين تحكمًا متقدمًا في الرسوم المتحركة ومحررًا غنيًا بالميزات.

الميزات البارزة في Mecanim هي مزج الرسوم المتحركة وإعادة استهداف الرسوم المتحركة.

يعد مزج الرسوم المتحركة عملية تلقائية لإجراء انتقالات سلسة بين الرسوم المتحركة.

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

في هذا البرنامج التعليمي، سأعرض كيفية تحريك المكعب وتشغيل الرسوم المتحركة على Keypress باستخدام Mecanim.

خطوات

لتحريك المكعب في Unity، اتبع الخطوات التالية:

  • إنشاء مكعب جديد (GameObject -> كائن ثلاثي الأبعاد -> Cube)

  • حدد المكعب ثم افتح نافذة الرسوم المتحركة (نافذة -> الرسوم المتحركة -> الرسوم المتحركة)
  • في نافذة الرسوم المتحركة، انقر فوق "Create"، مما سيؤدي إلى إنشاء رسم متحرك جديد، ووحدة تحكم Animator جديدة، وسيقوم بإرفاق مكون Animator بالمكعب.
  • قم بتسمية الرسوم المتحركة الجديدة "SpinAnimation"

  • في نافذة الرسوم المتحركة، انقر فوق AddProperty -> تحويل -> تدوير
  • ستحتوي هذه الرسوم المتحركة على إطارين، البداية والنهاية.
  • بالنسبة للإطار الأول، قمنا بضبط التدوير على (0، 0، 0)

  • بالنسبة للإطار الأخير، قمنا بضبط التدوير على (0، 360، 0)

الرسوم المتحركة جاهزة.

نصيحة: لإنشاء المزيد من الرسوم المتحركة، ما عليك سوى النقر على اسم الحركة في نافذة الرسوم المتحركة ثم النقر على "Create new Clip...".

لإعداد وحدة تحكم Mecanim Animator، اتبع الخطوات التالية:

  • انقر نقرًا مزدوجًا على أصل Animator Controller الذي تم إنشاؤه باستخدام الرسوم المتحركة

  • ستظهر نافذة جديدة بعنوان "Animator"، والتي يجب أن تبدو كالتالي:

  • ستلاحظ وجود سهم يشير من "Entry" إلى "SpinAnimation"، مما يعني أن الرسوم المتحركة سيتم تشغيلها بمجرد بدء المشهد، ولكن هذا ليس ما نريده، نريد فقط تشغيل الرسوم المتحركة عند الضغط على مفتاح.

نظرًا لأن Mecanim يتطلب وجود رسم متحرك للإدخال، فإن ما يمكننا فعله هو إنشاء حالة فارغة جديدة وجعلها إدخالاً:

  • انقر بزر الماوس الأيمن على نافذة Animator -> إنشاء حالة -> فارغة:

  • حدد حالة الإدخال -> انقر بزر الماوس الأيمن عليها -> قم بتعيين الحالة الافتراضية لـ StateMachine، ثم أشر إلى "New State":

آخر شيء يجب القيام به هو إجراء انتقال إلى SpinAnimation، ولكننا نريد إجراء الانتقال فقط بمجرد استيفاء الشرط المحدد، وذلك عندما يتم تفعيل علامة التبويب Parameters:

  • انقر فوق علامة التبويب Parameters في نافذة Animator ثم انقر فوق الرمز (+):

ستلاحظ أن هناك أنواعًا متعددة متاحة، ولكن في الوقت الحالي، سنختار Trigger، وهو مشابه لـ bool ولكن على عكس bool، يتم ضبطه تلقائيًا على false بمجرد اكتمال الرسوم المتحركة، وهو مفيد للرسوم المتحركة ذات اللقطة الواحدة.:

  • قم بتسمية المعلمة "spinTrigger"

  • أخيرًا، حدد "Any State" -> انقر بزر الماوس الأيمن عليه -> قم بالانتقال، ثم أشر إلى SpinAnimation:

  • انقر فوق سهم الانتقال وفي عرض المفتش ضمن الشروط، انقر فوق (+) وتأكد من تحديد معلمة spinTrigger

  • بشكل افتراضي، يتم تمكين التكرار للرسوم المتحركة التي تم إنشاؤها باستخدام Unity، ولكن بما أننا نريد تشغيل الرسوم المتحركة مرة واحدة فقط، فإن ما يتعين علينا القيام به هو تحديد مقطع الرسوم المتحركة في عرض المشروع ثم إلغاء تحديد خانة الاختيار وقت التكرار:

لكي نتمكن من التحكم بمعلمات Mecanim من خلال برنامج نصي، سنحتاج إلى استخدام وظائف خاصة، تحقق من الكود أدناه:

  • أنشئ سكريبت جديد وسميه "AnimationTest" وأزل كل شيء منه ثم الصق الكود أدناه بداخله:

AnimationTest.cs

using UnityEngine;

public class AnimationTest : MonoBehaviour
{

    Animator animator;

    // Start is called before the first frame update
    void Start()
    {
        //Get Animator component
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        //Play spin animation on key press
        if (Input.GetKeyDown(KeyCode.Q))
        {
            animator.SetTrigger("spinTrigger");
        }
    }
}
  • قم بإرفاق البرنامج النصي AnimationTest.cs إلى Cube باستخدام مكون Animator:

الآن دعونا نختبره:

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

كل شيء يعمل كما هو متوقع، الضغط على Q يؤدي إلى تشغيل الرسوم المتحركة.

المقالات المقترحة
بناء نظام القائمة التفاعلية في الوحدة
كيفية استيراد الرسوم المتحركة إلى الوحدة
برنامج Unity Cinemachine والجدول الزمني التعليمي
كيفية إنشاء لعبة مستوحاة من FNAF في Unity
Unity Scripting API وUnity Pro
كيفية رسم الأشجار على التضاريس في الوحدة
يجب أن يكون لديك أصول للأغراض العامة من أجل الوحدة