Unity Mecans איך לשחק אנימציה בלחיצת מקש
Mecanim הוא כלי מונחה מצב עבור Unity המעניק למפתחים בקרת אנימציה מתקדמת ועורך עשיר בתכונות.
מאפיינים בולטים של מכינים הם מיזוג אנימציה ומיקוד מחדש של אנימציה.
מיזוג אנימציות הוא תהליך אוטומטי של ביצוע מעברים חלקים בין הנפשות.
מיקוד מחדש של אנימציה הוא תהליך של ייעוד מחדש של אנימציות קיימות כך שיפעלו בין מערכות דמויות מרובות, ומבטל את הצורך ליצור אנימציות חדשות עבור כל דמות חדשה.
במדריך זה, אני אראה כיצד להנפיש קובייה ולהפעיל את האנימציה בלחיצת מקשים עם Mecanim.
שלבים
כדי להנפיש קובייה ב-Unity, בצע את השלבים הבאים:
- צור קובייה חדשה (GameObject -> אובייקט תלת מימד -> קובייה)
- בחר קובייה ואז פתח את חלון ההנפשה (חלון -> אנימציה -> אנימציה)
- בחלון האנימציה לחץ על "Create", שייצור אנימציה חדשה, בקר אנימטור חדש ויצרף רכיב אנימטור לקובייה.
- תן שם לאנימציה החדשה "SpinAnimation"
- בחלון האנימציה לחץ על AddProperty -> Transform -> Rotation
- אנימציה זו תהיה בעלת 2 פריימים, התחלה וסיום.
- עבור המסגרת הראשונה, הגדרנו את הסיבוב ל- (0, 0, 0)
- עבור המסגרת האחרונה, הגדרנו את הסיבוב ל-(0, 360, 0)
האנימציה מוכנה.
טיפ: כדי ליצור אנימציות נוספות, פשוט לחץ על שם האנימציה בחלון האנימציה ואז לחץ על "Create new Clip...".
כדי להגדיר את Mecanim Animator Controller, בצע את השלבים הבאים:
- לחץ פעמיים על הנכס של בקר אנימטור שנוצר עם האנימציה
- יופיע חלון חדש שכותרתו "Animator", שאמור להיראות בערך כך:
- תשימו לב שיש חץ שמצביע מה-"Entry" ל-"SpinAnimation", מה שאומר שהאנימציה תתנגן ברגע שהסצנה תתחיל, אבל זה לא מה שאנחנו רוצים, אנחנו רוצים להפעיל את האנימציה רק בלחיצת מקש.
מכיוון שמקנים דורשת אנימציית כניסה, מה שאנחנו יכולים לעשות זה ליצור מצב ריק חדש ולהפוך אותו לכניסה:
- קליק ימני על חלון אנימטור -> צור מצב -> ריק:
- בחר מצב כניסה -> לחץ לחיצה ימנית עליו -> הגדר מצב ברירת מחדל של StateMachine, ואז הצבע על "New State":
הדבר האחרון שנותר לעשות הוא לבצע מעבר ל-SpinAnimation, אבל אנחנו רוצים לעשות את המעבר רק ברגע שהתנאי הספציפי מתקיים, ואז נכנסת לשונית Parameters:
- לחץ על הכרטיסייה פרמטרים בחלון האנימטור ולאחר מכן לחץ על הסמל (+):
אתה תבחין שיש מספר סוגים זמינים, אך לעת עתה נבחר טריגר, זה דומה ל-bool אבל בניגוד ל-bool, הוא מוגדר אוטומטית ל-false ברגע שהאנימציה הושלמה, שימושי עבור אנימציות של צילום אחד:
- תן שם לפרמטר "spinTrigger"
- לבסוף בחר "Any State" -> קליק ימני על זה -> בצע מעבר, ואז הצבע על SpinAnimation:
- לחץ על חץ המעבר ובתצוגת מפקח תחת תנאים לחץ על (+) וודא שהפרמטר spinTrigger נבחר
- כברירת מחדל אנימציות שנוצרו עם Unity מופעלות לולאה, אך מכיוון שאנו רוצים לשחק אנימציה רק פעם אחת, מה שעלינו לעשות הוא לבחור את האנימציה קליפ בתצוגת הפרויקט ולאחר מכן לבטל את הסימון בתיבת הסימון Loop Time:
כדי להיות מסוגל לשלוט בפרמטרים של 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:
עכשיו בואו נבדוק את זה:
הכל עובד כמצופה, לחיצה על Q תפעיל את האנימציה.