آموزش اجرای انیمیشن در یونیتی Animation.Play و Animation.CrossFade
منبع :gameover.blog.ir
مثال1:
متغیری از نوع عمومی public می سازیم که باید کامپوننت انیمیشن هم drag کنیم روش در inspector.
روش زیر برای انیمیشن هایی که با انیماتور نمی شه اجرا کرد(انیمیشن های سنتی یا legacy که با نرم افزارهای قدیمی ریگ شده) و حتی انیمیشن های جدید(هر دو ) جواب مید:
public Animation anim; void Start() { anim.Play("esme animation"); }
مثال2:
متغیری از نوع خصوصی private می سازیم که کامپوننت انیمیشن رو از طریق کد دریافت می کنیم.
private Animation anim; void Start () { anim.GetComponent<Animation> (); anim.Play("esme animation"); }
نکته:
کامپوننت انیمیشن هم باید به player بدید. برای اینکه خودش کامپوننت رو بده یا نذاره حذفش کنید این دستور رو قبل از اسم کلاس بیارید:
[RequireComponent(typeof(Animation))]
نکته مهم: گزینه LEgacy یا سنتی در حالت دو بعدی یافت نمیشه و احتمالا فقط برای حالت سه بعدی در بخش Rig باید تنظیم بشه.(دو بعدی هم بهتره با Animator کار بشه نه Animation)
شاید یکی از دلایل افت فریم و کند شدن بازی های یونیتی اینه که از چند کامپوننت انیمیاتور استفاده کنیم.
پس بهتره بعضی اوقات به جای انیماتورها از کامپوننت انیمیشن استفاده بشه.
ابتدا کاراکتری که می خواید براش انیمیشن های مختلف بسازید انتخاب کنید( از کادر hierarchy(کادر اجزای صحنه))
سپس به منوی window->animation برید و انیمیشنی رو ایجاد کنید(Create new animation clip)
سپس کامپوننت animation بدید به کاراکترتون. و size بدید و انیمیشن ها رو بیارید توش:
دستور Crossfade:
سپس از کد زیر الهام بگیرید برای سوئیچ بین انیمیشن ها :(دقت کنید اسم اسکریپت و کلاس سیشارپ ما باید حتما یکسان باشه.در اینجا ExampleClass)
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Animation anim; void Start() { anim = GetComponent<Animation>(); } void Update() { if (Mathf.Abs(Input.GetAxis("Vertical")) > 0.1F) anim.CrossFade("Run"); else anim.CrossFade("Idle"); } }
نکته: تابع یا متد CrossFade هم برای کامپوننت Animator کاربرد داره هم کامپوننت Animation.
موفق باشید.
در صورتی که نیاز به بهینه سازی هم دارید این مطلب و بخونید:
http://gameover.blog.ir/1394/11/05/%D8%A8%D8%B1%D8%AE%DB%8C-%D8%A7%D8%B2-%D8%AA%DA%A9%D9%86%DB%8C%DA%A9-%D9%87%D8%A7%DB%8C-%D9%85%D9%88%D8%AB%D8%B1-%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%A7%D9%84%D8%A7%D8%B1%D9%81%D8%AA%D9%86-%D8%B3%D8%B1%D8%B9%D8%AA-%D8%B1%D9%86%D8%AF%D8%B1-%D9%88-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%DA%A9%D8%A7%D8%B1%D8%A7%DB%8C%DB%8C-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C
http://gameover.blog.ir/1394/08/11/%DA%A9%D8%AF-%D8%AD%D8%B1%DA%A9%D8%AA-%D9%BE%D8%B1%D8%B4-%D8%AF%D8%A7%D8%A8%D9%84-%D8%AC%D8%A7%D9%85%D9%BE-%D8%B1%D8%A7%D9%87-%D8%B1%D9%81%D8%AA%D9%86-%D8%AF%D9%88-%D8%A8%D8%B9%D8%AF%DB%8C-player-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Easy-touch-version-3-%D8%B3%DB%8C%D8%B4%D8%A7%D8%B1%D9%BE