Kā integrēt lekt animāciju ar Vienotību

Šodien es pabeidzu savu pirmo lekt animāciju Blenderī, kuru es gribēju integrēt Vienotībā. Es domāju, ka man vienkārši būs jādara kaut kas līdzīgs “Ok, kad es nospiežu lēkāšanas pogu, iedarbina lēkājošo animāciju un tas arī viss!”. Pat ne tuvu!

Es to izdarīju, un rezultāts bija… ne gluži tāds, kādu gaidīju.

Esmu diezgan pārliecināts, ka iepriekš aprakstītais process darbosies dažos īpašos gadījumos, bet diemžēl ne manā.

Man nācās izmantot garāku metodi.

Īss ieskats lēkā

Regulāru lēcienu var sadalīt trīs dažādās fāzēs:

  • Lekt impulsu: kad mūsu varonis uzņem impulsu un lec.
  • Kritiena fāze: kad mūsu varonis mēģina palikt stabils, atrodoties gaisā.
  • Nosēšanās fāze: kad mūsu varonis, kas joprojām atrodas gaisā, gatavojas sasniegt zemi.

Kā tas darbojas spēlē?

Kad spēlētājs nospiež atstarpes taustiņu (kas acīmredzami ir lēkāšanas poga ), tas iedarbina lēkājošo animāciju.

Kad spēlētājs ir gaisā, sākas cita animācija: krītošā fāze, kas cilpa, līdz tā sasniedz zemi.

Tad sākas nosēšanās animācija, bet ar smalkumu: ja šī animācija sākas, kad varonis tikko sasniedzis zemi, ir par vēlu! Šajā posmā mēs zinām, ka mēs nonāksim zemē (vienkārši tāpēc, ka mēs to varam redzēt). Tādējādi mēs viegli varam novērtēt attālumu un sagatavoties triecienam, atrodoties gaisā.

Padomāsim par to, kā mēs uzvedamies, lecot! Kad redzam, ka mēs nonāksim , mēs gatavojamies “triecienam”. Mēs to varam, jo ​​mums ir pamata redzējums un mēs varam ātri novērtēt, kad mums jābūt gataviem.

Tas, kas mūsu gadījumā pietrūkst, ir kaut kas, lai novērtētu mūsu rakstura attālumu no zemes! Es jums aprakstīšu vienu metodi, kā novērtēt šo attālumu no rakstura līdz zemei, taču ņemiet vērā, ka to var izdarīt arī daudzos citos veidos. To var izmantot citā spēles motorā.

Viltība ir izstarot staru no mūsu personāža viņa ātruma virzienā. Tad mēs varēsim aktivizēt nosēšanās animāciju īstajā laikā tieši pirms tās sasniegšanas! 🥳

Gatavs?

Īstenošana ar Vienotību

Vienotībā ir rīks ar nosaukumu Raycast, kas mums sniegs tieši to, ko vēlamies.

Mēs rīkojamies divos posmos:

  • Mēs nosūtām Raycast mūsu ātruma virzienā, lai noteiktu attālumu, pirms mēs pieskaramies zemei.
  • Ja mūsu ātrums uz vertikālās ass, y Vienotībā, ir negatīvs (tas nozīmē, ka mēs krītam) un zeme ir pārāk tuvu, tad mēs iedarbinām nosēšanās animāciju.

Tas ir uzlabojams, taču tagad, kad mēs sākam spēli, skripts īstajā laikā aktivizēs mūsu animācijas. Līdz bezgalībai un tālāk! ️