Paano isama ang isang paglukso ng animation sa Unity

Ngayon natapos ko ang aking unang paglukso ng animation sa Blender, na nais kong isama sa Unity. Akala ko kakailanganin kong gawin ang isang bagay tulad ng "Ok kapag pinindot ko ang pindutan ng paglukso, ma-trigger ang paglukso ng animation at iyon na!". Hindi man malapit!

Ginawa ko ito at ang resulta ay ... hindi masyadong ang inaasahan ko.

Sigurado ako na ang proseso na inilarawan ko kanina ay gagana sa ilang mga tiyak na kaso ngunit nakalulungkot, hindi sa minahan.

Kailangan kong dumaan sa mas mahabang pamamaraan.

Ang isang mabilis na pagtingin sa isang jump

Ang isang regular na pagtalon ay maaaring ibahin sa tatlong magkakaibang mga phase:

  • Pagpilit ng Jump: kapag ang aming karakter ay kumukuha ng pagpilit at tumalon.
  • Bumabagsak na yugto: kapag sinusubukan ng aming karakter na manatiling matatag habang nasa hangin.
  • Ang phase ng landing: kapag ang ating pagkatao, nasa himpapawid, ay naghahanda ng sarili upang maabot ang lupa.

Paano ito gumagana sa isang laro?

Kapag pinipindot ng player ang spacebar (na malinaw naman ang pindutan ng paglukso ), nag-udyok sa paglabas ng animation.

Kapag ang manlalaro ay nasa himpapawid, ang isa pang animation ay nagsisimula: ang bumabagsak na yugto na nag-ikot hanggang sa marating ito sa lupa.

Pagkatapos ay nagsisimula ang landing animation ngunit sa isang subtility: kung magsisimula ang animation na ito nang makarating sa lupa ang karakter, huli na! Sa yugtong ito alam natin na pupunta tayo sa lupa (dahil lamang sa nakikita natin). Kaya, madali naming suriin ang distansya at maghanda para sa epekto habang nasa hangin.

Isipin natin kung paano tayo kumilos kapag tumalon tayo! Kapag nakita natin na matamaan tayo sa lupa, inihahanda natin ang ating sarili sa "epekto". Maaari tayo dahil mayroon tayong pananaw sa lupa at mabilis na suriin kung kailangan nating maging handa.

Ang nawawala sa ating kaso ay isang bagay upang masuri ang distansya ng ating pagkatao mula sa lupa! Ilantad ko sa iyo ang isang pamamaraan upang suriin ang distansya mula sa character hanggang sa lupa, ngunit tandaan na maraming iba pang mga paraan upang gawin ito. Maaari itong magamit sa iba pang engine ng laro.

Ang nanlilinlang ay maglagay ng sinag mula sa ating pagkatao sa direksyon ng kanyang bilis. Magagawa nating i-trigger ang landing animation sa tamang oras bago natin ito maabot! 🥳

Handa na?

Pagpapatupad sa Unity

Sa Unity, mayroong isang tool na tinatawag na Raycast na magbibigay sa amin ng eksaktong nais namin.

Nagpapatuloy kami sa dalawang hakbang:

  • Nagpapadala kami ng isang Raycast sa direksyon ng aming bilis upang matukoy ang distansya bago kami hawakan ang lupa.
  • Kung ang aming bilis sa vertical axis, y sa Unity, ay negatibo (na nangangahulugang bumabagsak kami) at ang lupa ay masyadong malapit, pagkatapos ay nag-trigger kami ng landing animation.

Ito ay perpekto ngunit ngayon kapag tumalon kami sa laro, ang script ay mag-trigger ng aming mga animation sa tamang oras. Upang kawalang-hanggan at lampas pa! ️