Вопрос Способы визуализировать стрельбу

Версия Minecraft
1.18.X

MyLars

Пользователь
Сообщения
7
Доброго времени суток! Cоздаю сервер? в этот же момент и плагин с механиками к нему. Одна из них - стрельба.
т.е создаю оружие(на основе любого предмета который потом будет иметь свою текстурку), стрельба и регистрация урона работает за счёт луча от rayтрейсинка, но он не визуален.
Поэтому, хотелось бы каким нибудь способом сделать летящии пули визуальными.
Один из вариантов мог бы быть жёлтый тонкий луч, который летел бы от оружия, до цели, но каким образом сделать его визуальным?
И по идеи можно было бы сделать взрыв у дула оружия(world.createExplosion()), но тогда необходимо было бы задать через тот же ресурспак другую текстуру взрыву.
Так, как же сделать луч который летит до цели?
 
Решение
Каким образом мне получить кусочки этого расстояния ?
Java:
Location start = ...;
Location end = ...;

double period = 0.5; //дистанция между ближайшими партиклами
Location current = start.clone();
double distance = start.distance(end);
int stepCount = (int) (distance / period);
Vector step = new Vector((end.x() - start.x()) / stepCount, (end.y() - start.y()) / stepCount,(end.z() - start.z()) / stepCount);
while (stepCount --> 0) {
    current.getWorld().spawnParticle(Particle.АЙДИ, current, КОЛ-ВО, 0, 0, 0, 0);
    current.add(step);
}

Это весь код спавна партиклов от начальной до конечной локации
У тебя же есть рейтрейсинг, значит есть локация стартовая и конечная. Подели расстояние между ними на мелкие кусочки и заспавнь там партиклы
какой тип партиклов выбирать тогда?
 
У тебя же есть рейтрейсинг, значит есть локация стартовая и конечная. Подели расстояние между ними на мелкие кусочки и заспавнь там партиклы
Каким образом мне получить кусочки этого расстояния ?
 
Каким образом мне получить кусочки этого расстояния ?
Java:
Location start = ...;
Location end = ...;

double period = 0.5; //дистанция между ближайшими партиклами
Location current = start.clone();
double distance = start.distance(end);
int stepCount = (int) (distance / period);
Vector step = new Vector((end.x() - start.x()) / stepCount, (end.y() - start.y()) / stepCount,(end.z() - start.z()) / stepCount);
while (stepCount --> 0) {
    current.getWorld().spawnParticle(Particle.АЙДИ, current, КОЛ-ВО, 0, 0, 0, 0);
    current.add(step);
}

Это весь код спавна партиклов от начальной до конечной локации
 
Java:
Location start = ...;
Location end = ...;

double period = 0.5; //дистанция между ближайшими партиклами
Location current = start.clone();
double distance = start.distance(end);
int stepCount = (int) (distance / period);
Vector step = new Vector((end.x() - start.x()) / stepCount, (end.y() - start.y()) / stepCount,(end.z() - start.z()) / stepCount);
while (stepCount --> 0) {
    current.getWorld().spawnParticle(Particle.АЙДИ, current, КОЛ-ВО, 0, 0, 0, 0);
    current.add(step);
}

Это весь код спавна партиклов от начальной до конечной локации
Вроде учил джаву, а это не прочитаю что бы понять)
 
Ну типо:

Код:
Location start = наша локация старта;
Location end = наша конечная локация;

double period = 0.5;
Location current = start.clone(); - хз
double distance = start.distance(end); - вычисление нашей дистанции от стартовой точки до конечной
int stepCount = (int) (distance / period); - делим получившиюся дистанцию от старт точки до конечной на период, тогда получим кол-во шагов.
Vector step = new Vector((end.x() - start.x()) / stepCount, (end.y() - start.y()) / stepCount,(end.z() - start.z()) / stepCount); - вычисляем наш вектор и направления
while (stepCount --> 0) {
    current.getWorld().spawnParticle(Particle.АЙДИ, current, КОЛ-ВО, 0, 0, 0, 0); спавним партиклы
    current.add(step); устанавливаем направление+сколько проехать
}
Объединено

Достаточно подставить свои значения, но лучше всё-таки попытаться разобраться
А вы же используете intellij idea при своих разработках? Как вы обошли требования покупки доступа к идее?
 
Последнее редактирование:
Ну типо:

Код:
Location start = наша локация старта;
Location end = наша конечная локация;

double period = 0.5;
Location current = start.clone(); - хз
double distance = start.distance(end); - вычисление нашей дистанции от стартовой точки до конечной
int stepCount = (int) (distance / period); - делим получившиюся дистанцию от старт точки до конечной на период, тогда получим кол-во шагов.
Vector step = new Vector((end.x() - start.x()) / stepCount, (end.y() - start.y()) / stepCount,(end.z() - start.z()) / stepCount); - вычисляем наш вектор и направления
while (stepCount --> 0) {
    current.getWorld().spawnParticle(Particle.АЙДИ, current, КОЛ-ВО, 0, 0, 0, 0); спавним партиклы
    current.add(step); устанавливаем направление+сколько проехать
}
Объединено


А вы же используете intellij idea при своих разработках? Как вы обошли требования покупки доступа к идее?
Да, вы всё правильно поняли.

На сайте есть community edition, она бесплатная
 
Да, вы всё правильно поняли.

На сайте есть community edition, она бесплатная
Да ладно?!?!? Господи, мучаюсь с этим сто лет, спасибо большое, я раньше и не замечал что там написано что я скачиваю Ultimate версию.

Не понял только что происходит когда делают клонирование локации
Объединено

Какую локацию мы получаем при клонировании стартовой?
 
Последнее редактирование:
Да ладно?!?!? Господи, мучаюсь с этим сто лет, спасибо большое, я раньше и не замечал что там написано что я скачиваю Ultimate версию.

Не понял только что происходит когда делают клонирование локации
Объединено

Какую локацию мы получаем при клонировании стартовой?
Новый класс с теми же значениями (сам не очень знаю зачем, но лучше оставить)

Если всё получилось, лучший ответ?
 
Последнее редактирование:
Назад
Сверху Снизу