Bagaimana cara mengintegrasikan animasi melompat dengan Unity

Hari ini saya menyelesaikan animasi lompat pertama saya di Blender, yang ingin saya integrasikan di Unity. Saya pikir saya hanya perlu melakukan sesuatu seperti "Ok ketika saya menekan tombol melompat, memicu animasi melompat dan hanya itu!". Bahkan tidak dekat!

Saya melakukan ini dan hasilnya adalah ... tidak seperti yang saya harapkan.

Saya cukup yakin proses yang saya jelaskan sebelumnya akan berhasil dalam beberapa kasus tertentu tetapi sayangnya, tidak di saya.

Saya harus melalui metode yang lebih lama.

Pandangan cepat ke lompatan

Lompatan reguler dapat dibagi dalam tiga fase yang berbeda:

  • Impuls lompat: ketika karakter kita mengambil impuls dan lompat.
  • Fase jatuh: ketika karakter kita mencoba untuk tetap stabil saat di udara.
  • Fase pendaratan: ketika karakter kita, masih di udara, sedang mempersiapkan dirinya untuk mencapai tanah.

Bagaimana cara kerjanya dalam game?

Ketika pemain menekan bilah spasi (yang jelas merupakan tombol melompat ), itu memicu animasi melompat.

Setelah pemain berada di udara, animasi lain dimulai: fase jatuh yang berputar sampai mencapai tanah.

Kemudian animasi pendaratan dimulai tetapi dengan subtilitas: jika animasi ini dimulai ketika karakter baru saja mencapai tanah, sudah terlambat! Pada fase ini kita tahu kita akan menyentuh tanah (hanya karena kita bisa melihatnya). Dengan demikian, kita dapat dengan mudah mengevaluasi jarak dan bersiap untuk dampak saat berada di udara.

Mari kita pikirkan bagaimana kita bersikap ketika kita melompat! Ketika kita melihat bahwa kita akan menyentuh tanah , kita sedang mempersiapkan diri kita untuk "dampak". Kita dapat karena kita memiliki visi lapangan dan dapat dengan cepat mengevaluasi kapan kita perlu dipersiapkan.

Apa yang hilang dalam kasus kami adalah sesuatu untuk mengevaluasi jarak karakter kami dari tanah! Saya akan memaparkan Anda satu metode untuk mengevaluasi jarak ini dari karakter ke tanah, tetapi perhatikan bahwa ada banyak cara lain untuk melakukannya. Ini dapat digunakan di mesin game lain.

Caranya adalah dengan melemparkan sinar dari karakter kita ke arah kecepatannya. Kami kemudian dapat memicu animasi pendaratan pada waktu yang tepat tepat sebelum kami mencapainya! 🥳

Siap?

Implementasi dengan Unity

Di Unity, ada alat bernama Raycast yang akan memberikan apa yang kita inginkan.

Kami melanjutkan dalam dua langkah:

  • Kami mengirim Raycast ke arah kecepatan kami untuk menentukan jarak sebelum kami menyentuh tanah.
  • Jika kecepatan kita pada sumbu vertikal, y di Unity, negatif (yang berarti kita jatuh) dan tanah terlalu dekat, maka kita memicu animasi pendaratan.

Itu sempurna tetapi sekarang ketika kita melompat dalam permainan, skrip akan memicu animasi kita pada waktu yang tepat. Menuju tak terbatas dan melampauinya! ️