יצירת אנימציות דו-ממדיות באחדות

כדי ליצור אנימציות דו-ממדיות ב-Unity, מפתחים יכולים להשתמש בחלון האנימציה המובנה וברכיב Unity Animator. להלן מדריך שלב אחר שלב לתחילת העבודה.

הקמת הפרויקט

  • פתח Unity ו-צור פרויקט דו-ממדי חדש או פתח פרויקט קיים.
  • אם מתחילים פרויקט חדש, הגדר את התבנית של הפרויקט כ-2D.

ייבוא ​​נכסי ספרייט

  • ניתן ליצור את הספרייטים בתוך Unity באמצעות עורך Sprite או לייבא מקובצי תמונה חיצוניים כגון PNG או JPEG.
  • כדי ליצור ספרייטים בתוך Unity, עבור לתפריט Asets, בחר צור ובחר Sprite או Sprite Renderer. לאחר מכן ניתן לצייר או לייבא את גרפיקת הספרייט.

הגדרת אנימציית Sprite

  • לאחר שהספרייטים מוכנים, בחר את נכס ה-sprite בחלון הפרויקט.
  • בחלון המפקח, ודא שסוג הטקסטורה מוגדר ל-'Sprite (2D and UI)'. אם לא, שנה אותו ל-'Sprite (2D and UI)'.
  • לחץ על נכס ה-Sprite בחלון הפרויקט כדי לפתוח אותו ב- Sprite Editor.
  • השתמש בעורך Sprite כדי להגדיר את פריימים בודדים של האנימציה. ניתן לפצל את הספרייט למספר תת-תמונות במידת הצורך. העורך מאפשר גם לשנות את נקודת הציר עבור כל פריים כדי לשלוט במיקום של הספרייט.
  • שמור את השינויים שבוצעו בעורך Sprite.

יצירת אנימציות באמצעות חלון ההנפשה

  • כדי לפתוח את חלון ההנפשה, עבור אל 'Window -> Animation'.
  • בחלון אנימציה, לחץ על כפתור צור כדי ליצור קליפ אנימציה חדש.
  • בחר את קליפ האנימציה בחלון הפרויקט, והמאפיינים שלו יופיעו בחלון המפקח.
  • בחלון המפקח אפשר להגדיר את אורך קליפ האנימציה, קצב הדגימה ומאפיינים אחרים.
  • כדי ליצור מסגרות מפתח, הזיזו את ראש ההשמעה בחלון ההנפשה לזמן זמן ספציפי ושנו את מאפייני הספרייט (למשל, מיקום, קנה מידה, סיבוב וכו') בחלון הסצנה או ההיררכיה.
  • הוסף מסגרות מפתח בזמנים שונים כדי ליצור אנימציה חלקה. Unity יבצע אינטרפולציה אוטומטית של הערכים בין ה-keyframes.

הגדרת האנימטור

  • בחר את אובייקט הספרייט בחלון הסצנה או ההיררכיה.
  • בחלון המפקח, לחץ על הלחצן הוסף Component וחפש "Animator" כדי להוסיף את רכיב ה- Animator לאובייקט.
  • לחץ על הלחצן צור ברכיב Animator כדי ליצור נכס חדש של בקר אנימטור.
  • הקצה את בקר האנימטור החדש שנוצר לשדה הבקר של רכיב האנימטור.

הגדרת בקר האנימטור

  • לחץ פעמיים על הנכס החדש שנוצר בקר אנימטור כדי לפתוח אותו בחלון האנימטור.
  • בחלון אנימטור, יש גרף של בקר אנימטור, המייצג את זרימת ההנפשות.
  • לחץ לחיצה ימנית בחלון האנימטור ובחר 'Create State -> From New Clip' או 'From Sprite Renderer' כדי ליצור מצבי הנפשה.
  • גרור ושחרר את קטעי האנימציה שנוצרו בעבר בחלון האנימציה למצבי ההנפשה המתאימים.
  • צור מעברים בין מצבי אנימציה על ידי לחיצה על מצב וגרירת החץ למצב אחר. אפשר להתאים את התנאים למעבר, כגון זמן, ערכי פרמטרים או אירועים.
  • אפשר להוסיף פרמטרים כדי לשלוט במעברים, כגון bools, ints או טריגרים. לדוגמה, יכול להיות פרמטר bool בשם "IsRunning" שמפעיל מעבר ממצב הנפשה סרק למצב הנפשה פועל.

משחק באנימציות

  • בחר את אובייקט הספרייט בחלון הסצנה או ההיררכיה.
  • ברכיב Animator בחלון המפקח, גרור את נכס ה- Animator Controller שנוצר אל השדה Controller.
  • לחץ על הלחצן Play בחלון האנימציה כדי לבדוק ולהציג תצוגה מקדימה של האנימציות.

שליטה באנימציות באופן פרוגרמטי

  • שליטה באנימציות דורשת גישה לרכיב ה- Animator מ-script.
  • בסקריפט, צור משתנה מסוג Animator והשתמש ב-'GetComponent<Animator>()' כדי לקבל הפניה לרכיב Animator המצורף לאובייקט ה-sprite.
  • לאחר מכן אפשר להשתמש בפונקציות ובמאפיינים של האנימטור כדי להפעיל מעברים, להגדיר ערכי פרמטרים או לשלוט בהפעלת ההנפשות. לדוגמה, קריאה ל-animator.SetBool("IsRunning", true) תפעיל את האנימציה הפועלת.
using UnityEngine;

public class AnimationController : MonoBehaviour
{
    private Animator animator;

    private void Start()
    {
        // Get a reference to the Animator component
        animator = GetComponent<Animator>();
    }

    private void Update()
    {
        // Check for input or condition to trigger animations
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // Trigger a jump animation
            animator.SetTrigger("Jump");
        }

        float moveInput = Input.GetAxis("Horizontal");
        animator.SetFloat("Speed", Mathf.Abs(moveInput));

        // Check if the character is grounded
        bool isGrounded = IsGrounded();

        // Set the "IsGrounded" parameter in the Animator
        animator.SetBool("IsGrounded", isGrounded);

        if (isGrounded && Input.GetKeyDown(KeyCode.C))
        {
            // Trigger a crouch animation
            animator.SetBool("IsCrouching", true);
        }

        if (isGrounded && Input.GetKeyUp(KeyCode.C))
        {
            // Stop the crouch animation
            animator.SetBool("IsCrouching", false);
        }
    }

    private bool IsGrounded()
    {
        // Implement your own logic to check if the character is grounded
        // For example, you can use raycasting or collision detection
        // and return true if the character is touching the ground
        // and false otherwise.
        return false;
    }
}

סיכום

זוהי סקירה בסיסית של יצירת אנימציות דו-ממדיות ב-Unity באמצעות הכלים המובנים. Unity תומך גם בטכניקות מתקדמות יותר כמו שימוש בגיליונות ספרייט, קינמטיקה הפוכה (IK) וסקריפט של אנימציה מותאמת אישית התנהגות. חקור את האפשרויות הללו על סמך הדרישות הספציפיות והמורכבות של האנימציות המדוברות.