כיצד לשלב אנימציה מקפיצה עם יוניטי

היום סיימתי את האנימציה הראשונה שקפצה בבלנדר שרציתי לשלב ב- Unity. חשבתי שאצטרך לעשות משהו כמו "אוקיי כשאני לוחץ על כפתור הקפיצה, הפעל את האנימציה הקופצת וזהו!". אפילו לא קרוב!

עשיתי זאת והתוצאה הייתה ... לא בדיוק מה שציפיתי.

אני די בטוח שהתהליך שתיארתי קודם יעבוד במקרים ספציפיים אך למרבה הצער, לא בשלי.

הייתי צריך לעבור שיטה ארוכה יותר.

מבט מהיר לקפיצה

ניתן לפצל קפיצה רגילה בשלושה שלבים שונים:

  • דחף של קפיצה: כאשר הדמות שלנו נוקטת באימפולס וקופצת.
  • שלב נפילה: כאשר הדמות שלנו מנסה להישאר יציבה באוויר.
  • שלב הנחיתה: כאשר הדמות שלנו, עדיין באוויר, מכינה את עצמה להגיע לקרקע.

איך זה עובד במשחק?

כאשר הנגן לוחץ על מקש הרווח (שהוא כמובן כפתור הקפיצה ), הוא מפעיל את אנימציית הקפיצה.

ברגע שהנגן באוויר, אנימציה נוספת מתחילה: השלב הנופל שמתעופף עד שהוא מגיע לקרקע.

ואז אנימציית הנחיתה מתחילה אבל עם עדינות: אם האנימציה הזו מתחילה כשהדמות בדיוק הגיעה לקרקע, כבר מאוחר מדי! בשלב זה אנו יודעים שאנחנו הולכים לפגוע בקרקע (פשוט כי אנו יכולים לראות זאת). לפיכך, אנו יכולים להעריך בקלות את המרחק ולהתכונן להשפעה באוויר.

בואו נחשוב איך אנחנו מתנהגים כשאנחנו קופצים! כאשר אנו רואים שאנחנו הולכים לפגוע בקרקע , אנו נערכים לעצמנו ל"השפעה ". אנו יכולים משום שיש לנו את חזון האדמה ונוכל להעריך במהירות מתי אנו צריכים להיות מוכנים.

מה שחסר בענייננו זה משהו להעריך את מרחק הדמות שלנו מהאדמה! אני אחשוף בפניכם שיטה אחת להערכת המרחק הזה מהדמות לאדמה, אך שימו לב שישנן דרכים רבות אחרות לעשות זאת. ניתן להשתמש במנוע משחק אחר.

החוכמה היא להפיל קרן מהדמות שלנו לכיוון המהירות שלו. לאחר מכן נוכל להפעיל את הנפשת הנחיתה בזמן הנכון רגע לפני שנגיע אליו! 🥳

מוכנים?

יישום עם האחדות

ב- Unity יש כלי שנקרא Raycast שייתן לנו בדיוק את מה שאנחנו רוצים.

אנו ממשיכים בשני שלבים:

  • אנו שולחים Raycast בכיוון המהירות שלנו כדי לקבוע את המרחק לפני שאנחנו נוגעים באדמה.
  • אם המהירות שלנו בציר האנכי, y באחדות, היא שלילית (מה שאומר שאנחנו נופלים) והקרקע קרובה מדי, אז אנו מפעילים את הנפשת הנחיתה.

זה מושלם אבל עכשיו כשנקפוץ למשחק, התסריט יפעיל את האנימציות שלנו בזמן הנכון. לנצח ומעבר! ️