Java LibGDX shaperender拒绝渲染

Java LibGDX shaperender拒绝渲染,java,libgdx,box2d,Java,Libgdx,Box2d,目前,我正在尝试渲染鼠标和主体之间的矩形。我希望线条具有最大长度 这意味着当屏幕上两个点之间的距离小于一定量时,矩形应位于鼠标和主体之间。如果不是,矩形应该在半径(从主体到鼠标的直线上的点)和主体之间 我使用一些向量逻辑来计算要绘制的点,但是当我似乎进入if语句时,在200距离以下绘制的线就消失了 ShapeRenderer sr = new ShapeRenderer(); sr.setColor(Color.WHITE); sr.begin(ShapeRenderer.ShapeTyp

目前,我正在尝试渲染鼠标和主体之间的矩形。我希望线条具有最大长度

这意味着当屏幕上两个点之间的距离小于一定量时,矩形应位于鼠标和主体之间。如果不是,矩形应该在半径(从主体到鼠标的直线上的点)和主体之间

我使用一些向量逻辑来计算要绘制的点,但是当我似乎进入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时,线条画得非常完美,尽管从打印向量的
x,y
坐标来看,它似乎正在检查

将鼠标点移出身体200步之前和之后的x、y坐标打印

MousePos: 213.0, 325.0
Entered If!
MousePos: 305.3836, 357.63123
编辑: 根据评论中的建议,我添加了一些图片

在这里,由于距离小于200,所以在球和鼠标之间画了一条线

在这里,距离超过200,我们输入if语句,除非返回到200以下,否则不会再画线


谢谢

Vector2
有一个
limit
方法来限制长度(如果大于某个值)

Vector2 dir=新向量(鼠标点).sub(球位)
方向限制(200f)
高级直线(球位,方向添加(球位),4f);

Vector2
有一个
limit
方法来限制长度(如果大于某个值)

Vector2 dir=新向量(鼠标点).sub(球位)
方向限制(200f)
高级直线(球位,方向添加(球位),4f);

我无法理解问题所在。你能展示图片来解释吗?@Nicolas嗨!我添加了一些图片,希望它现在更清晰一些。基本上,当距离小于200时,我希望线和鼠标连接,当距离大于200时,线指向鼠标,但不够长,无法到达。我很难理解问题所在。你能展示图片来解释吗?@Nicolas嗨!我已经添加了一些图片,希望它现在更清晰一些,基本上我希望线和鼠标在距离小于200时连接,当距离大于200时,线指向鼠标,但不够长,无法到达。这很有效,谢谢!虽然我仍然很困惑为什么我的尝试最终没有成功,但基本上是做同样的事情不?我不知道。也许
scl(100)
应该是200?谢谢!虽然我仍然很困惑为什么我的尝试最终没有成功,但基本上是做同样的事情不?我不知道。也许
scl(100)
应该是200?