Admin (обсуждение | вклад) |
(Исправлено setAnimationTickCallback на setAnimateTickCallback) |
||
Строка 21: | Строка 21: | ||
Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира. | Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира. | ||
</div> <div class="mw-parser-output"> | </div> <div class="mw-parser-output"> | ||
+ | <div class="mw-parser-output"> | ||
== Случайная анимация == | == Случайная анимация == | ||
Строка 28: | Строка 29: | ||
<u style="text-underline:black">Для регистрации события случайной анимации используется функция:</u> | <u style="text-underline:black">Для регистрации события случайной анимации используется функция:</u> | ||
− | <syntaxhighlight lang="Javascript">Block. | + | <syntaxhighlight lang="Javascript">Block.setAnimateTickCallback(id, function(x, y, z, id, data) { |
// параметры: координаты, а также id и data обновляемого блока | // параметры: координаты, а также id и data обновляемого блока | ||
});</syntaxhighlight> | });</syntaxhighlight> | ||
− | '' ''</div> </div> </div> | + | '' ''</div> </div> </div></div> |
Многие блоки не требуют обновления каждый игровой тик, это нужно только тем блокам, которые постоянно выполняют какое-то действие. Однако блоки вроде пшеницы или листвы должны иногда обновляться для проверки и обновления состояния, а факела - испускать частицы огня.
Листвы, пшеницы и факелов в мире крайне много, и потому регистрировать их как tile entity не представляется возможным из-за нагрузки, которую они в таком случае дадут.
Потому в MCPE существует механика случайных обновлений блоков, позволяющая блокам некоторого типа в произвольный момент обновляться и выполнять какое-то действие.
Случайные обновления являются сильнейшей оптимизацией и упрощением создания подобных процессов и далее будет описано, почему.
Случайный тик регистрируется как функция для какого-то типа блока (по его ID) и вызывается, когда такой блок где-то произвольно обновляется. Для каждого в мире блока в среднем такое обновление происходит раз в 1.5-2 минуты.
Для регистрации события случайного тика используется функция:
Block.setRandomTickCallback(id, function(x, y, z, id, data) {
// параметры: координаты, а также id и data обновляемого блока
});
Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира.
Данная механика похожа на случайный тик, это тоже случайное событие для блока с каким-то ID и с теми же параметрами. Главное отличие в том, что это событие вызывается чаще, где-то раз в 5-10 секунд, однако только для блоков, рядом с которыми находится игрок.
Это крайне хорошо подходит для создания каких-либо анимаций, вроде испускания частиц, которое актуально только, если игрок находится в непосредственной близости. Для этого события так же существует ограничение, при котором он не вызывает нагрузки, это примерно те же 5-10% от объема пространства рядом с игроком.
Для регистрации события случайной анимации используется функция:
Block.setAnimateTickCallback(id, function(x, y, z, id, data) {
// параметры: координаты, а также id и data обновляемого блока
});