Я с друзьями делаю карту с прятками и мы хотим чтобы примерно каждую минуту возле всех игроков запускался фейерверк. Таймер из повторителей (знаю есть и другие варианты).

Александр Иванов
2 года назад

Запустит красный фейерверк, взрывающийся через полторы секунды. Задержка перед взрывом регулируется тегом LifeTime, а тип, цвет и параметры взрыва — тегом Fireworks. Если хотите убрать взрыв, просто сотрите всё, что заключено в скобки после тега «tag» (… Summon firework_rocket ~ ~ ~ > )

Цвет и вид взрыва настроить довольно сложно, но можно. Хотя, в случае с прятками достаточно и обычного варианта.

Источник: minecraftru.net

Команда /particle в Minecraft! Зачем и как использовать!

Спавн партиклей сферой.

Скрин-шот чего? Сфера нужна, как у взрыва.
Пытался у взрыва партиклы повзаимствовать, но там 3-4 диска спавнятся, формирующи сферу, в общем не очень выглядит.
[merge_posts_bbcode]Добавлено: 19.03.2015 20:55:31[/merge_posts_bbcode]

Знаю, дали в зубы параметрическое уравнение сферы, с тета и фи, которые х*р знает что значат.

svk

И ещё, как заспавнить цветные партиклы? Самому делать?
+Я вижу, что разные партиклы, рендерятся на разном расстоянии, это тоже надо делать свой партикл?

tox1cozZ

aka Agravaine

8,429 597 2,870
Попробуй посмотреть класс Sphere.

svk

А насчёт партиклов? Можно-ли сделать изменение цвета/дальности прорисовки не создавая свой?

tox1cozZ

aka Agravaine

8,429 597 2,870
Там вроде есть частицы от зелий, в них можно менять цвет.
Название не помню.

GloomyFolken

Ну если нужно простое решение для «рандомной» сферы, то проще всего сделать случайный вектор, нормализовать его и сдвинуть частицу на этот вектор от центра взрыва. Что-то вроде:

Random rand = new Random(); Vector3f randVec = new Vector3f(rand.nextFloat()-0.5F, rand.nextFloat()-0.5F, rand.nextFloat()-0.5F); randVec.normalise(); float particleX = centerX + randVec.x; //TODO y и z

Если нужно равномерное расстояние между партиклами (имхо не лучший выбор для взрыва), то как-то так:
//число сегментов по вертикали стоит сделать вдвое меньше числа сегментов по горизонтали for (int vert = 0; vert < NUM_VERTICAL_SEGMENTS; vert++)< for (int hor = 0; hor < NUM_HORIZONTAL_SEGMENTS; hor++)< //угол от 0 до 2Pi float angleH = (float)hor/NUM_HORIZONTAL_SEGMENTS * 2 * (float)Math.PI; //угол от -Pi/2 до Pi/2 float angleV = (float)vert/NUM_VERTICAL_SEGMENTS * (float)Math.PI — (float)Math.PI/2; float particleY = centerY + MathHelper.sin(angleV); float particleX = centerX + MathHelper.cos(angleH) * MathHelper.cos(angleV); float particleZ = centerZ + MathHelper.sin(angleH) * MathHelper.cos(angleV); >>

Читайте также:  Как в Майнкрафте растопить печь

P.S: весь код писался сейчас из головы и без проверки, так что поправьте, если оно не работает.
P.P.S: поправил некоторые моменты, первый вариант точно бы не работал
P.P.P.S: ну теперь-то уже точно должно работать

annalifegame

GloomyFolken написал(а):

Ну если нужно простое решение для «рандомной» сфера, то проще всего сделать случайный вектор, номализовать его и частицу на этот вектор от центра взрыва. Что-то вроде

Спасибо, решила частично свою проблему)))
http://vk.com/annalast — мой вк)
Пишите кому нужна помощь.

svk

GloomyFolken написал(а):

Ну если нужно простое решение для «рандомной» сферы, то проще всего сделать случайный вектор, нормализовать его и сдвинуть частицу на этот вектор от центра взрыва. Что-то вроде:

Random rand = new Random(); Vector3f randVec = new Vector3f(rand.nextFloat()-0.5F, rand.nextFloat()-0.5F, rand.nextFloat()-0.5F); randVec.normalise(); float particleX = centerX + randVec.x; //TODO y и z

Если нужно равномерное расстояние между партиклами (имхо не лучший выбор для взрыва), то как-то так:
//число сегментов по вертикали стоит сделать вдвое меньше числа сегментов по горизонтали for (int vert = 0; vert < NUM_VERTICAL_SEGMENTS; vert++)< for (int hor = 0; hor < NUM_HORIZONTAL_SEGMENTS; hor++)< //угол от 0 до 2Pi float angleH = (float)hor/NUM_HORIZONTAL_SEGMENTS * 2 * (float)Math.PI; float particleX = centerX + MathHelper.cos(angleH); float particleZ = centerZ + MathHelper.sin(angleH); //угол от -Pi/2 до Pi/2 float angleV = (float)vert/NUM_VERTICAL_SEGMENTS * (float)Math.PI — (float)Math.PI/2; float particleY = centerY + MathHelper.sin(angleV); particleX *= MathHelper.cos(angleV); particleZ *= MathHelper.cos(angleV); >>

P.S: весь код писался сейчас из головы и без проверки, так что поправьте, если оно не работает.
P.P.S: поправил некоторые моменты, первый вариант точно бы не работал

Не работает 2 вариант.

GloomyFolken

Ну а что второй вариант делает? Мне лень проверять.
И проверь, что пытался использовать код после последней правки, потому что их было штук 5
[merge_posts_bbcode]Добавлено: 20.03.2015 21:52:05[/merge_posts_bbcode]

Читайте также:  Можно ли приручить дельфина в Майнкрафт

а, точно, там фейл небольшой, ща перепишу.. done

svk

GloomyFolken написал(а):

Ну а что второй вариант делает? Мне лень проверять.
И проверь, что пытался использовать код после последней правки, потому что их было штук 5
[merge_posts_bbcode]Добавлено: 20.03.2015 21:52:05[/merge_posts_bbcode]

а, точно, там фейл небольшой, ща перепишу

Оно то рыбной палочкой спавнит, то несколько сфер в той-же форме.

GloomyFolken

Да йопт, ща сам чекну
[merge_posts_bbcode]Добавлено: 20.03.2015 22:03:34[/merge_posts_bbcode]

Неправда, пашет последний вариант.

h_1426874617_6314584_5d7ee5013c.png

[merge_posts_bbcode]Добавлено: 20.03.2015 22:09:14[/merge_posts_bbcode]

Только одна проблемка остается, у «полюсов» сразу пачка партиклов кучкуется, а «на экваторе» — ничего. Исправить это несложно. Нужно просто делать количество сегментов по горизонтали не константным, а зависящим от текущего вертикального сегмента. Например:

if (vert < NUM_VERTICAL_SEGMENTS / 2) numHorizontalParticles = vert * 2; else numHorizontalParticles = (NUM_VERTICAL_SEGMENTS — vert) * 2;
Короче, дальше сам справишься.

Dovakin

Научишь делать партиклы,глуми?

GloomyFolken

А еще стоит делать или так (нестрогое неравенство, тогда партиклы на полюсах будут):
for (int vert = 0; vert

или так (начиная с 1, тогда их не будет):
for (int vert = 1; vert < NUM_VERTICAL_SEGMENTS; vert++)

[merge_posts_bbcode]Добавлено: 20.03.2015 22:17:27[/merge_posts_bbcode]

Dovakin написал(а):
Научишь делать партиклы,глуми?

Два варианта.
1) Берешь, делаешь свой класс extends EntityFX и страдаешь (а еще больше страдают владельцы калькуляторов, на которых этот код будет выполняться).
2) Начинаешь пилить свою либу для партиклов и в этот раз еще больше страдаешь сам. По ходу дела наверняка придется неплохо разобраться в openGL
Свою либу для частиц я не кину (мне кушать хочется, я не могу плод своих трудов всем конкурентам дарить). Задавать движение частиц относительно несложно, нужно просто немного понимать, как выглядят графики простейших функций вроде параболы/гиперболы/синусоиды.

Читайте также:  Как выглядит торнадо в Майнкрафте

Источник: forum.mcmodding.ru

Мод Fancy Block Particles (Улучшенные частицы) для Майнкрафт

Мод Fancy Block Particles добавляет реалистичные частицы в Майнкрафт, благодаря этому моду вы сможете настроить стандартные частицы в игре под ваши нужды и предпочтения. Просто нажмите клавишу P и у вас откроется меню настроек.

Скриншоты:

Мод Fancy Block Particles (Улучшенные частицы) для Майнкрафт - скриншот 1

Мод Fancy Block Particles (Улучшенные частицы) для Майнкрафт - скриншот 2

Смотреть видео-обзор:

Источник: minerussia.ru