Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | <div class="mw-parser-output"> | + | <div class="mw-parser-output"><div class="mw-parser-output"> |
− | InnerCore, в отличии от его предшественника CoreEngine, имеет встроенную поддержку анимаций. Это значит, что для того, чтобы в мире появилась какая-то моделька, не нужно создавать моба. Достаточно создать лишь простейшую анимацию. Всего существует | + | InnerCore, в отличии от его предшественника CoreEngine, имеет встроенную поддержку анимаций. Это значит, что для того, чтобы в мире появилась какая-то моделька, не нужно создавать моба. Достаточно создать лишь простейшую анимацию. Всего существует два вида анимаций - базовые анимации и анимации предметов. Давайте рассмотрим их возможности подробнее: |
= Базовые анимации = | = Базовые анимации = | ||
Строка 14: | Строка 14: | ||
Стоит отметить, что render может принимать любое значение нативного рендера, как кастомного (''render.getId()''), так и [[InnerCore/Список_ванильных_рендеров|ванильного]]. | Стоит отметить, что render может принимать любое значение нативного рендера, как кастомного (''render.getId()''), так и [[InnerCore/Список_ванильных_рендеров|ванильного]]. | ||
− | + | <div class="mw-parser-output"> | |
== Динамичные анимации == | == Динамичные анимации == | ||
Строка 25: | Строка 25: | ||
});</syntaxhighlight> | });</syntaxhighlight> | ||
− | Замечу, что '''''this'''''внутри функции обновления анимации будет указывать на саму анимацию, что и используется в этом примере. | + | Замечу, что '''''this '''''внутри функции обновления анимации будет указывать на саму анимацию, что и используется в этом примере. |
− | + | </div> | |
== Прочие переменные и методы объекта Animation.Base == | == Прочие переменные и методы объекта Animation.Base == | ||
Строка 37: | Строка 37: | ||
*''destroy()'' - уничтожает анимацию в мире. | *''destroy()'' - уничтожает анимацию в мире. | ||
*''describe(description)'' - задает настройки для анимации в следующем формате: | *''describe(description)'' - задает настройки для анимации в следующем формате: | ||
+ | |||
+ | | ||
<syntaxhighlight lang="Javascript">{ | <syntaxhighlight lang="Javascript">{ | ||
render: render, | render: render, | ||
Строка 44: | Строка 46: | ||
При этом параметры skin и scale считаются устаревшими, поскольку являются частью объекта рендера, а не самой анимации. Их использовать не следует. | При этом параметры skin и scale считаются устаревшими, поскольку являются частью объекта рендера, а не самой анимации. Их использовать не следует. | ||
− | + | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> | |
= Анимации предметов = | = Анимации предметов = | ||
− | + | Анимации предметов работают так же, как и базовые, но вместо объекта рендера принимают описание предмета ([[InnerCore/Список_ванильных_рендеров|тип рендера]] ItemSprite, по-сути). Для создания используется следующий класс: | |
− | < | + | <syntaxhighlight lang="Javascript"> var animation = new Animation.Item(x, y, z);</syntaxhighlight> |
− | </ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Для того, чтобы анимация появилась в мире, опишем и загрузим её | ||
+ | <pre>animation.describeItem({ | ||
id: 280, | id: 280, | ||
− | |||
count: 1, | count: 1, | ||
− | |||
data: 0, | data: 0, | ||
− | |||
− | |||
− | |||
− | |||
− | |||
size: 1, | size: 1, | ||
− | + | rotation: [Math.PI / 2, 0, 0], | |
− | |||
− | |||
− | rotation: | ||
− | |||
− | |||
− | |||
notRandomize: true | notRandomize: true | ||
+ | }); | ||
+ | animation.load(); | ||
− | |||
</pre> | </pre> | ||
− | + | Объясним подробнее предназначение каждого из параметров: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | *id, count, data - стандартное описание предмета. Если count больше 1, будет отрисовано несколько предметов рядом, подобно дропу. | |
− | </div> | + | *size - размер предмета. По умолчанию 0.5. |
+ | *rotation - позволяет изменить расположение предмета по трем осям. Задается в радианах. В примере Math.PI / 2 это 90°, поворачиваем анимацию вокруг оси x. | ||
+ | *notRandomize - не делать случайных отступов между предметами, если их больше 1. Если не задан или выставлен в false, расстояние между краями каждого отдельного предмета будет случайным. | ||
+ | Данный тип анимации можно изменять динамически, так же, как и базовую.</div> </div> </div> </div> </div> </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 считаются устаревшими, поскольку являются частью объекта рендера, а не самой анимации. Их использовать не следует.
Анимации предметов работают так же, как и базовые, но вместо объекта рендера принимают описание предмета (тип рендера ItemSprite, по-сути). Для создания используется следующий класс:
var animation = new Animation.Item(x, y, z);
Для того, чтобы анимация появилась в мире, опишем и загрузим её
animation.describeItem({ id: 280, count: 1, data: 0, size: 1, rotation: [Math.PI / 2, 0, 0], notRandomize: true }); animation.load();
Объясним подробнее предназначение каждого из параметров: