Гайд Создание бесконечных частиц в 2D (1.16.5 forge)

Начинающий
Статус
Оффлайн
Регистрация
29 Май 2023
Сообщения
12
Реакции[?]
0
Поинты[?]
0
Всем привет, многие наверно видели партиклы в гуи у некоторых читов (пример WintWare). Хотел бы подробнее разьяснить как работает данная система и как лучше ее реализовать.

Начнем с того что нам нужно тело для наших партиклов, напишем его.
constructor:
public class particle {

 static LinkedList<particle> particles = new LinkedList<>(); //используем для эффективности

 int x; //для координаты точек
 int y; //для координаты точек

 public particle() {
  this.x = random(1, Minecraft.getInstance().getWindow().getWidth()); //рандом от 1 до конца width монитора
  this.y = getWindow().getHeight(); //псевдо код (нижняя сторона монитора)
 }
 
 public static void particleAdd() {
  particles.add(new particle()); //добавляем партиклы
 }
 
 public static void onRender() {
  for(particle part : particles) {
  //сделаем проверку на удаления
  if(part.y <= 0) {
   particles.remove(part);
   break; //используем оператор для завершение цикла (пофиксит краш при удаление)
  }
 
   utils.circle(part.x, part.y, 5, Color.WHITE); //рендерим круг
  }
 }
 
 //Создадим метод рандома для того чтобы партиклы появлялись в разном диапозоне на экране
 public static int random(int start, int end) {
   end -= start;
   return (int) (Math.random() * ++end) + start;
 }
 
 //теперь создадим анимацию передвижения частиц в верх
 public static void particleAnimation() {
  for(particle part : particles) {
   part.y -= 25; //используем это значение для того чтобы они не спамились и быстро удалялись
  }
 }

}
Вот и весь код, не забывайте что это все писалось на ходу и не имело заготовки, так же мы обошлись без дополнительного листа на удаление партиклов. Всем спасибо.
 
Сверху Снизу