top of page

Добавление простой анимации моба ч.2

  • ozick
  • 14 янв. 2016 г.
  • 3 мин. чтения

В этой части будет идтись о добавлении простой анимации ходьбы нашему мобу. В первой части мы подготовили модель моба к корректной анимации. Если вы этого не сделали - сделайте. Я буду работать все с той же моделью Санты. Скажу сразу, его конечности (и голова) состоят из нескольких шейпов. Например, шейпы правной руки (right arm):

ra1

ra2

ra3

ra4

Головы (head):

h1

h2

h3

h4

h5

И так далее. Такое название шейпов поможет вам, если у вашего моба также по несколько шейпов на конечность. После того, как вы исправили модель моба, заново экспортируйте ее в .java

В MCreator`e выделите мод моба, и нажмите на кнопку его редактирования. Заново загрузите модель моба, и остановитесь на окне анимации:

Теперь задайте на каждом пункте нужный шейп:

Head animation part - шейп головы

Right leg animation part - шейп правой ноги

Left leg animation part - шейп левой ноги

Right arm animation part - шейп правой руки

Left arm animation part - шейп левой руки

Если же у вас какая-то часть состоит из нескольких шейпов - указывайте один из них (любой, но удобно - первый)

У меня это выглядит так:

Теперь проходим все остальные этапы настройки мода. Если у вашего моба конечности состоят из одного шейпа - анимация готова. Можете заходить в игру, и наслождаться его походкой.

Для тех, у кого конечности моба состоят из более чем одного шейпа, прошу проследовать за мной.

Нужно вручную дописать анимацию всем остальным шейпам.

В главном меню программы, где кнопки Create new element, Edit element есть кнопка View source (просмотреть код). Выбераем мод с нашим мобом, и нажимаем на эту кнопку

Открывается окно с кодом мода с мобом. Не пугаясь, листайте в самый низ (чаще, ползунок сразу внизу)

Если вы добавляли анимацию, то вы увидите такие стройки:

this.что-то.rotateAngleY = f3 / (180F / (float)Math.PI); this.что-то.rotateAngleX = f4 / (180F / (float)Math.PI); this.что-то.rotateAngleX = MathHelper.cos(f * 1.0F) * -1.0F * f1; this.что-то.rotateAngleX = MathHelper.cos(f * 1.0F) * 1.0F * f1; this.что-то.rotateAngleX = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 2.0F * f1 * 0.5F; this.что-то.rotateAngleX = MathHelper.cos(f * 0.6662F) * 2.0F * f1 * 0.5F;

Вместо "что-то" у вас должно стоять название шейпа.

Первые две строки отвечаютза анимацию головы

Потом идут:

Левая нога

Правая нога

Левая рука

Правая рука

(в такой последовательности)

Например, при назначении анимации головы, и выбрал шейп h1

Тогда у меня первые 2 строки будут выглядеть так:

this.h1.rotateAngleY = f3 / (180F / (float)Math.PI); this.h1.rotateAngleX = f4 / (180F / (float)Math.PI);

Или другой пример. При назначении анимации правой руки, я выбрал шейп ra1

Тогда, строка анимации правой руки у меня должна выглядеть так:

this.ra1.rotateAngleX = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 2.0F * f1 * 0.5F;

А левой (la1):

this.la1.rotateAngleX = MathHelper.cos(f * 0.6662F) * 2.0F * f1 * 0.5F;

Вы должны понять как работает эта часть кода.

После этого приступим к дописанию анимации.

Нужно на подобии первых шейпов анимировать остальные шейпы.

Например. У меня правая нога состоит из 4-ч шейпов:

rl1

rl2

r3

rl4

А строка анимации первого шейпа выглядит так:

this.rl1.rotateAngleX = MathHelper.cos(f * 1.0F) * 1.0F * f1;

С такой строкой анимирован только первый шейп правой ноги. После этой строки добавим n-ое кол-во таких же строк (копируем и вставляем), где n - кол-во шейпов конечности. В моем случае - 4.

Но в каждой строке нужно заминить название первого шейпа на остальные шейпы. У меня это:

this.rl1.rotateAngleX = MathHelper.cos(f * 1.0F) * 1.0F * f1;

this.rl2.rotateAngleX = MathHelper.cos(f * 1.0F) * 1.0F * f1;

this.rl3.rotateAngleX = MathHelper.cos(f * 1.0F) * 1.0F * f1;

this.rl4.rotateAngleX = MathHelper.cos(f * 1.0F) * 1.0F * f1;

Как видите, в каждой строке анимируется часть конечности (правой ноги)

В первой строке анимируется шейп rl1, во второй - rl2, в третьей - rl3, ну и в четвертой - rl4.

(и все эти шейпы образуют одну часть, в моем случае - правой ноги)

У вас же может быть другое кол-во строк (зависит от кол-ва шейпов в одной конечности).

С головой также, но по два шейпа.

Допустим, голова моего моба состоит из 3-х шейпов.

Анимация одного шейпа головы выглядит так:

this.h1.rotateAngleY = f3 / (180F / (float)Math.PI); this.h1.rotateAngleX = f4 / (180F / (float)Math.PI);

Тогда полная анимация головы будет выглядеть так:

this.h1.rotateAngleY = f3 / (180F / (float)Math.PI); this.h1.rotateAngleX = f4 / (180F / (float)Math.PI);

this.h2.rotateAngleY = f3 / (180F / (float)Math.PI); this.h2.rotateAngleX = f4 / (180F / (float)Math.PI);

this.h3.rotateAngleY = f3 / (180F / (float)Math.PI); this.h3.rotateAngleX = f4 / (180F / (float)Math.PI);

this.h4.rotateAngleY = f3 / (180F / (float)Math.PI); this.h4.rotateAngleX = f4 / (180F / (float)Math.PI);

В голове, на каждый шейп по две строки. Таким образом делаем анимацию каждому оставшемуся шейпу.

После того, как закончите, нажимайте кнопку сверху Save, и закрываем редактор. Теперь можно запускать игру, и наблюдать за походкой моба.

ВНИМАНИЕ! После каждой рекомпиляции мода (редактировании), дописаная анимация шейпов будет "слетать". По этому после первого раза желательно скопировать код полной анимации, и сохранить его у себя где-то в файле.

 
 
 

Commenti


bottom of page