Admin (обсуждение | вклад) м (Admin moved page CoreEngine/Анимации to InnerCore/Анимации) |
Admin (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| + | <div class="mw-parser-output"> | ||
| + | InnerCore, в отличии от его предшественника CoreEngine, имеет встроенную поддержку анимаций. Это значит, что для того, чтобы в мире появилась какая-то моделька, не нужно создавать моба. Достаточно создать лишь простейшую анимацию. Всего существует три вида анимаций - базовые анимации, анимации предметов и анимации текста. Давайте рассмотрим их возможности подробнее: | ||
| − | + | = Базовые анимации = | |
| − | + | == Статичные анимации == | |
| − | == | + | Для создания базовой анимации используется класс Animation.Base, который создает новую анимацию на координатах x, y, z: |
| + | <syntaxhighlight lang="Javascript">var animation = new Animation.Base(x, y, z);</syntaxhighlight> | ||
| − | + | Чтобы отобразить нашу модельку без анимации в мире, достаточно задать рендер анимации и загрузить её: | |
| + | <syntaxhighlight lang="Javascript">animation.describe({render: render.getId()}); | ||
| + | animation.load();</syntaxhighlight> | ||
| − | + | Стоит отметить, что render может принимать любое значение нативного рендера, как кастомного (''render.getId()''), так и [[InnerCore/Список_ванильных_рендеров|ванильного]]. | |
| − | + | == Динамичные анимации == | |
| − | + | Для создания динамичных анимаций используется функция ''loadCustom(callable)''. В качестве параметра эта функция принимает лишь функцию, в которой мы и будем производить наши изменения в модели. Чтобы изменить рендер, достаточно лишь изменить его объект ''Render ''и вызвать метод ''refresh()''. Для изменения расположения будем использовать функцию ''setPos(x, y, z)'', которая устанавливает новые координаты объекта в мире. Поскольку часто возникает необходимость изменить координаты относительно текущих, текущие будем получать из объекта ''coords''. '''Внимание!''' Не изменяйте объект ''coords'', это не изменит реальное расположение анимации в мире! | |
| − | + | И, конечно же, пример: | |
| − | < | + | <syntaxhighlight lang="Javascript">animation.loadCustom(function(){ |
| + | this.setPos(this.coords.x + 0.5, this.coords.y, this.coords.z - 0.5); | ||
| + | this.refresh(); | ||
| + | });</syntaxhighlight> | ||
| − | + | Замечу, что '''''this'''''внутри функции обновления анимации будет указывать на саму анимацию, что и используется в этом примере. | |
| − | + | == Прочие переменные и методы объекта Animation.Base == | |
| − | + | *''load()'' - создает анимацию в игре | |
| + | *''loadCustom(callable)'' - создает динамичную анимацию в игре, используя функцию callable для изменения рендера и положения. | ||
| + | *''setPos(x, y, z)'' - устанавливает положение анимации в мире. | ||
| + | *''coords ''- получает координаты анимации в мире. | ||
| + | *''getAge()'' - возвращает 0. Вдруг кому пригодится. | ||
| + | *''refresh() ''- обновляет объект рендера анимации. | ||
| + | *''destroy()'' - уничтожает анимацию в мире. | ||
| + | *''describe(description)'' - задает настройки для анимации в следующем формате: | ||
| + | <syntaxhighlight lang="Javascript">{ | ||
| + | render: render, | ||
| + | skin: skin, | ||
| + | scale: scale | ||
| + | }</syntaxhighlight> | ||
| − | | + | При этом параметры skin и scale считаются устаревшими, поскольку являются частью объекта рендера, а не самой анимации. Их использовать не следует. |
| − | + | = Анимации предметов = | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Также можно создать изображение в мире предмета. | Также можно создать изображение в мире предмета. | ||
| − | + | <pre>var ani_item = new Animation.Item(x, y, z); | |
| − | + | </pre> | |
| − | <pre>var ani_item = new Animation.Item(x, y, z);</pre> | ||
| − | |||
| − | |||
В остальном эта анимация похожа на обычную, только настраивается она методом animation.describeItem | В остальном эта анимация похожа на обычную, только настраивается она методом animation.describeItem | ||
| − | <pre> | + | <pre>ani_item.describeItem({ |
| − | |||
| − | ani_item.describeItem({ | ||
//Настраиваем характеристики отоюражаемого предмета | //Настраиваем характеристики отоюражаемого предмета | ||
| Строка 212: | Строка 76: | ||
notRandomize: true | notRandomize: true | ||
| − | });</pre> | + | }); |
| + | </pre> | ||
| − | + | = Текстовые анимации = | |
| − | |||
| − | == | ||
| − | |||
| − | |||
Также в мире можно отображать в мире текст: | Также в мире можно отображать в мире текст: | ||
| − | |||
| − | |||
<pre>var ani_txt = new Animation.Text(x, y, z); | <pre>var ani_txt = new Animation.Text(x, y, z); | ||
| Строка 228: | Строка 87: | ||
ani_txt.setText(text);</pre> | ani_txt.setText(text);</pre> | ||
| + | </div> | ||
InnerCore, в отличии от его предшественника CoreEngine, имеет встроенную поддержку анимаций. Это значит, что для того, чтобы в мире появилась какая-то моделька, не нужно создавать моба. Достаточно создать лишь простейшую анимацию. Всего существует три вида анимаций - базовые анимации, анимации предметов и анимации текста. Давайте рассмотрим их возможности подробнее:
Для создания базовой анимации используется класс Animation.Base, который создает новую анимацию на координатах x, y, z:
var animation = new Animation.Base(x, y, z);
Чтобы отобразить нашу модельку без анимации в мире, достаточно задать рендер анимации и загрузить её:
animation.describe({render: render.getId()});
animation.load();
Стоит отметить, что render может принимать любое значение нативного рендера, как кастомного (render.getId()), так и ванильного.
Для создания динамичных анимаций используется функция loadCustom(callable). В качестве параметра эта функция принимает лишь функцию, в которой мы и будем производить наши изменения в модели. Чтобы изменить рендер, достаточно лишь изменить его объект Render и вызвать метод refresh(). Для изменения расположения будем использовать функцию setPos(x, y, z), которая устанавливает новые координаты объекта в мире. Поскольку часто возникает необходимость изменить координаты относительно текущих, текущие будем получать из объекта coords. Внимание! Не изменяйте объект coords, это не изменит реальное расположение анимации в мире!
И, конечно же, пример:
animation.loadCustom(function(){
this.setPos(this.coords.x + 0.5, this.coords.y, this.coords.z - 0.5);
this.refresh();
});
Замечу, что thisвнутри функции обновления анимации будет указывать на саму анимацию, что и используется в этом примере.
{
render: render,
skin: skin,
scale: scale
}
При этом параметры skin и scale считаются устаревшими, поскольку являются частью объекта рендера, а не самой анимации. Их использовать не следует.
Также можно создать изображение в мире предмета.
var ani_item = new Animation.Item(x, y, z);
В остальном эта анимация похожа на обычную, только настраивается она методом animation.describeItem
ani_item.describeItem({
//Настраиваем характеристики отоюражаемого предмета
id: 280,
count: 1,
data: 0,
//Рендерим палку
//Устанавливаем размер
size: 1,
//Устанавливаем выравнивание по оси x/y/z
rotation: "x\y\z",
//Убираем неровности, если отрисовывается несколько анимаций
notRandomize: true
});
Также в мире можно отображать в мире текст:
var ani_txt = new Animation.Text(x, y, z); //Настроим отображаемый текст ani_txt.setText(text);