Легкий способ рисовать прямую пунктирную линию в libgdx?

Я хотел бы нарисовать прямую пунктирную линию в libgdx для Android-игры между точками экрана.

В настоящее время у меня есть следующий код для рисования не пунктирной линии, используя ShapeRenderer :

 shapeRenderer.begin(ShapeType.Line); //draws normal line, would prefer it dotted............... shapeRenderer.line(touchPos.x, touchPos.y, someSprite.getX(), someSprite().getY()); shapeRenderer.end(); 

Я видел еще один вопрос о пунктирных линиях , но для меня это немного перегиб, так как он мне не нужен. Я просто нуждаюсь в прямой пунктирной линии , например

………………………………………….. ………………………………………

Думал о том, что цикл, который просто вычисляет позиции точек на линии и просто рисует точки там? Но это действительно необходимо, кто-нибудь знает более простой способ?

В настоящее время я использую этот метод для рисования пунктирных линий :

 /** * Draws a dotted line between to points (x1,y1) and (x2,y2). * @param shapeRenderer * @param dotDist (distance between dots) * @param x1 * @param y1 * @param x2 * @param y2 */ private void drawDottedLine(ShapeRenderer shapeRenderer, int dotDist, float x1, float y1, float x2, float y2) { shapeRenderer.begin(ShapeType.Point); Vector2 vec2 = new Vector2(x2, y2).sub(new Vector2(x1, y1)); float length = vec2.len(); for(int i = 0; i < length; i += dotDist) { vec2.clamp(length - i, length - i); shapeRenderer.point(x1 + vec2.x, y1 + vec2.y, 0); } shapeRenderer.end(); } 

Поэтому в основном я вычислил вектор линии, чтобы рисовать и зацикливать ее, чтобы нарисовать точки на основе желаемого расстояния до точки. В моем тесте было довольно неплохое расстояние 10:

  drawDottedLine(shapeRenderer, 10, x1, y1, x2, y2); 

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

Вы могли бы нарисовать ряд точек, которые, в свою очередь, сделают пунктирную линию. И создайте цикл for, который рисует ряд точек до конца. Код будет выглядеть примерно так:

 shapeRenderer.begin(ShapeType.Point); for (float i = touchPos.x; i < someSprite.getX(); i += (someSprite.getY() / touchPos.y)) { for (float j = touchPos.y; j < someSprite.getY(); j += (someSprite.getX() / touchPos.x)) { // floats used because the increment might be decimal places. shapeRenderer.point(i, j, 0); } } shapeRenderer.end(); 

Не знаю, будет ли это работать для вас, но вы можете дать ему попробовать и отредактировать значения приращений для i и j по вашему желанию.

В целом, я боюсь, что нет предопределенной функции для рисования пунктирных линий в libgdx.

Intereting Posts
Как использовать AsyncTask с помощью ThreadPoolExecutor Android – xml – включить один и тот же макет несколько раз не работает Что происходит с автоматическим инициализацией первичных ключей после удаления? Как связать ресурсы android xml с редактором по умолчанию в eclipse? Как плитку и прокрутку большого изображения (10000×10000) в android Установить ширину и высоту ImageView программно? Android Studio – перенос проектов из eclipse Последняя выбранная дата не попадает в диалоговое окно datepicker Как отсортировать даты от текущей до старой даты на Android или Java? GSON выбрасывает «Ожидаемый BEGIN_OBJECT, но был BEGIN_ARRAY»? Как программно ссылаться на <string> в xml-файле в android GridView getChildAt () возвращает null «Aapt.exe» вышел с кодом 1 при создании Mono для Android-проекта Вызов веб-службы WSDL с использованием модифицированного андроида Загрузите большой файл с индикатором выполнения и без ошибки OutOfMemory в Android