نحوه ادغام انیمیشن پرش با Unity

امروز اولین انیمیشن پرش را در Blender به پایان رساندم که می خواستم در یونیتی ادغام شود. فکر کردم فقط باید کاری انجام دهم مانند "خوب وقتی دکمه پریدن را فشار می دهم ، انیمیشن پرش را شروع می کنم و همین!" حتی نزدیک نیست!

من این کار را کردم و نتیجه آن چیزی نبود که انتظار داشتم.

من کاملاً مطمئن هستم که روشی که قبلاً توضیح دادم در برخی موارد خاص کار خواهد کرد اما متأسفانه نه در معدن من.

مجبور شدم از روش طولانی تری استفاده کنم.

نگاهی سریع به پرش

پرش منظم را می توان در سه مرحله مختلف تقسیم کرد:

  • تکانه پرش: وقتی شخصیت ما تکانش می خورد و پرش می کند.
  • مرحله سقوط: وقتی شخصیت ما سعی می کند در حالی که در هوا قرار دارد پایدار بماند.
  • مرحله فرود: وقتی شخصیت ما ، هنوز در هوا است ، خود را برای رسیدن به زمین آماده می کند.

چگونه در یک بازی کار می کند؟

هنگامی که پخش کننده فضا را فشار می دهد (که بدیهی است دکمه پرش) ، انیمیشن پرش را آغاز می کند.

هنگامی که پخش کننده در هوا است ، انیمیشن دیگری شروع می شود: مرحله سقوط که تا رسیدن به زمین حلقه می شود.

سپس انیمیشن فرود شروع می شود اما با یک ظرافت: اگر این انیمیشن زمانی شروع شود که کاراکتر تازه به زمین رسید ، خیلی دیر شده است! در این مرحله می دانیم که قصد داریم به زمین برخورد کنیم (فقط به این دلیل که می توانیم آن را ببینیم). بنابراین ، ما می توانیم به راحتی فاصله را ارزیابی کرده و در هنگام هوا در اثر ضربه آماده شویم.

بیایید به این فکر کنیم که وقتی پرش می کنیم چگونه رفتار می کنیم! وقتی می بینیم که می خواهیم به زمین برخورد کنیم ، خود را برای "تأثیر" آماده می کنیم. ما می توانیم به دلیل اینکه دید زمین داریم و می توانیم به سرعت ارزیابی کنیم وقتی نیاز داریم.

آنچه در پرونده ما از دست می رود چیزی برای ارزیابی فاصله شخصیت ما از زمین است! من یک روش را برای ارزیابی این فاصله از کاراکتر تا سطح زمین در معرض دید شما قرار می دهم ، اما توجه داشته باشید که روش های بسیاری دیگر برای این کار وجود دارد. این قابل استفاده در موتور بازی دیگر است.

ترفند این است که پرتوی از شخصیت ما را در جهت سرعت او قرار دهیم. ما می توانیم درست قبل از رسیدن به آن ، انیمیشن فرود را در زمان مناسب شروع کنیم! 🥳

آماده؟

اجرای با وحدت

در یونیتی ابزاری به نام Raycast وجود دارد که دقیقاً آنچه را که می خواهیم به ما می دهد.

در دو مرحله انجام می دهیم:

  • ما یک Raycast را در جهت سرعت خود می فرستیم تا فاصله را قبل از لمس زمین مشخص کنیم.
  • اگر سرعت ما در محور عمودی ، y در یونیتی منفی باشد (به معنای سقوط ماست) و زمین خیلی نزدیک است ، پس انیمیشن فرود را شروع می کنیم.

بسیار عالی است اما اکنون وقتی در بازی پرش می کنیم ، فیلم نامه انیمیشن های ما را در زمان مناسب آغاز می کند. تا بی نهایت و فراتر از آن! ️