یه مشکل مسخره برای من پیش اومده نمیدونم بقیه هم بهش برخوردن یا نه. اگه این مشکل رو دیدین و یا تونستین حلش کنین، برا بقیه هم عنوان کنین.
من در حال خوندن کتاب Unity Game Development Essentials هستم. تو فصل 4 که داره collision detection و ray casting رو درس میده، میخواد یه دری رو با توجه به موقعیت player باز کنه و بعد از چند ثانیه هم ببنده. این کار با وارد کردن مدل یه کلبه که درش متحرک سازی شده و با استفاده از گزینه split animation تو تنظیمات fbx importer انجام میده.
باز کردن در رو با استفاده از تشخیص برخورد در رویداد OnControllerColliderHit انجام میده و انیمیشن مربوطه راحت اجرا میشه.
بعد یه delay درست میکنه تو رویداد Update و بعد 3 ثانیه درو میبنده. مشکل اینجاست که انیمیشن مربوط به بسته شدن درب تا انتها اجرا نمیشه. و جالب اینکه میزان اجرای این انیمیشن هم به صورت تصادفی اتفاق میفته. یعنی گاهی تا 60%، گاهی تا 80%، گاهی ... و گاهی هم همه انیمیشن اجرا میشه.
من شک کردم شاید به خاطر موتور فیزیک و یا اشتباه من تو کدنویسی اینجوری میشه. همه کدهای مربوط به باز وبسته شدن رو برداشتم و یه رویداد ساده OnMouseDown براش نوشتم و باز هم مشکل حل نشد.
بعد مدل رو که fbx بود تو مایا Import کردم.انیمیشنش درست بود ظاهرا. انیمیشن تو فریم 20 تموم میشد(در بسته میشد) و split animation تو unity فریم 24 رو set کرده بود!
آخرش رفتم یه چهارچوب ساده درست کردم و همون حالت باز و بسته شدن رو تو مایا ساختم.بعد به صورت fbx وارد unity کردم و همه کارای قبلی رو براش تکرار کردم.باز درست نشد. ولی وقتی برای مدل خودم یه چند فریم تو split animation برای بخش "بسته شدن در" اضافه کردم(6 فریم) مشکل حل شد.
همین کارو برای مدل کلبه تکرار کردم ولی همونجوری مشکل داره. حتی تعداد فریمهای انتها رو برای کلبه بالاتر بردم (حدود 15 فریم) ولی هیچ تغییری نکرد.
تنها تفاوت انیمیشن من با مدل کتاب اینه که من از یه گراف خطی استفاده کردم ولی کتاب یه انیمیشن با گراف spline (منحنی نرم) درست کرده بود.
اگه کسی راجع به این مساله میدونه لطفا بگه.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]