В настоящее время я пытаюсь визуализировать прямоугольник между мышью и телом. Уловка в том, что я хочу, чтобы линия имела максимальную длину.
Значение, когда расстояние между двумя точками на экране меньше определенное количество прямоугольника должно быть между мышью и телом. Если нет, то прямоугольник должен находиться между радиусом (точка на линии от тела к мыши) и телом.
Я использую некоторые векторные логарифмы c, чтобы вычислить точку для рисования, но когда мне кажется, что go внутри моего оператора if линия, нарисованная на расстоянии менее 200, просто исчезает.
ShapeRenderer sr = new ShapeRenderer();
sr.setColor(Color.WHITE);
sr.begin(ShapeRenderer.ShapeType.Filled);
if (ballPosition.dst(mousePos) > 200) {
System.out.println("Entered If!");
//Calculate point a distance away from ballPosition
Vector2 cloneMousePos = new Vector2(mousePos);
Vector2 dir = cloneMousePos.sub(ballPosition);
dir = dir.nor().scl(100);
Vector2 test = ballPosition.add(dir);
mousePos = test;
}
System.out.println("MousePos: " + mousePos.x + ", " + mousePos.y);
sr.rectLine(ballPosition, mousePos, 4f);
sr.end();
Это внутри класса Screen, я нахожу это странным, поскольку, когда расстояние меньше 200, линия dr aws отлично, хотя из печати x,y
координат векторов это, кажется, проверяется.
Печать координат x, y mousepos
до перемещения на расстояние 200 от тела и после
MousePos: 213.0, 325.0
Entered If!
MousePos: 305.3836, 357.63123
РЕДАКТИРОВАТЬ: По предложению в комментариях я добавил несколько фотографий.
![Line being drawn when distance is under 200](https://i.stack.imgur.com/AYaRU.png)
Здесь строка между мячом и мышью рисуется, так как расстояние меньше 200.
![Line not being drawn when distance is over 200](https://i.stack.imgur.com/UDduH.png)
в то время как здесь расстояние становится больше 200, и мы вводим оператор if no линия больше не проводится, если мы не вернемся к до 200.
Спасибо!