Како интегрисати анимацију за скакање са Јединством

Данас сам завршио своју прву анимацију за скакање у Блендеру, коју сам желео да интегрирам у Јединство. Мислио сам да ћу једноставно морати да урадим нешто попут „Ок када притиснем тастер за скакање, покренем анимацију за скакање и то је то!“. Ни близу! ‍♂

Учинио сам то и резултат је био ... није баш оно што сам очекивао.

Прилично сам сигуран да би поступак који сам описао раније радио у одређеним случајевима, али нажалост, не у мом.

Морао сам да прођем дуже методе.

Брзи поглед у скок

Уобичајени скок се може поделити у три различите фазе:

  • Скочи нагони: када наш лик подстиче импулс и скаче.
  • Фаза пада: када наш лик покушава да остане стабилан док је у ваздуху.
  • Фаза слетања: када се наш лик, још увек у ваздуху, припрема да дође до земље.

Како се то ради у игри?

Када играч притисне размакницу (што је очигледно дугме за скакање ), активира анимацију за скакање.

Једном када је играч у ваздуху, започиње још једна анимација: фаза пада која се петља док не досегне земљу.

Тада се покреће анимација за слетање, али са потпором: ако се та анимација покрене када је лик тек стигао на земљу, прекасно је! У овој фази знамо да ћемо погодити земљу (једноставно зато што то можемо видети). Тако лако можемо проценити удаљеност и припремити се за удар током боравка у ваздуху.

Размислимо о томе како се понашамо када скачемо! Када видимо да ћемо ударити о земљу , припремамо се за „удар“. Можемо јер имамо визију тла и можемо брзо проценити када треба да будемо спремни.

Оно што недостаје у нашем случају је нешто за процењивање удаљености нашег карактера од тла! Изложићу вам једну методу за процену ове удаљености од лика до земље, али имајте на уму да постоје многи други начини за то. Може се користити у другим моторима за игру.

Трик је у бацању зрака нашег лика у његовом правцу брзине. Тада ћемо моћи да покренемо анимацију за слетање у право време пре него што је достигнемо! 🥳

Спреман?

Имплементација са јединством

У Јединству постоји алат зван Раицаст који ће нам дати управо оно што желимо.

Настављамо у два корака:

  • Ми шаљемо Раицаст у нашем правцу брзине да одредимо растојање пре него што додирнемо земљу.
  • Ако је наша брзина на вертикалној оси, и у Јединству, негативна (што значи да падамо) и тло је преблизу, тада покрећемо анимацију слетања.

Савршено је, али сада када ускочимо у игру, скрипта ће покренути наше анимације у право време. До бескраја и преко!