Я с друзьями делаю карту с прятками и мы хотим чтобы примерно каждую минуту возле всех игроков запускался фейерверк. Таймер из повторителей (знаю есть и другие варианты).
Александр Иванов
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]
Неправда, пашет последний вариант.
[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 и у вас откроется меню настроек.
Скриншоты:
Смотреть видео-обзор:
Источник: minerussia.ru