LibGDX ShapeRenderer拒绝渲染

问题描述 投票:1回答:1

当前,我正在尝试在鼠标和主体之间绘制一个矩形,使我希望线具有最大长度。

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

[我正在使用一些矢量逻辑来计算绘制点,但是当我似乎进入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之后,mousepos的x,y坐标的打印]]

MousePos: 213.0, 325.0
Entered If!
MousePos: 305.3836, 357.63123

编辑:

根据建议,我添加了一些图片。

Line being drawn when distance is under 200

由于距离小于200,因此在球和鼠标之间绘制了一条线。

Line not being drawn when distance is over 200

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

谢谢!

当前,我正在尝试在鼠标和主体之间绘制一个矩形,所要捕获的是我希望该线具有最大长度。表示屏幕上两点之间的距离较小时...

java libgdx box2d
1个回答
3
投票

[Vector2具有limit方法来限制长度,如果大于某个值。

© www.soinside.com 2019 - 2024. All rights reserved.