当前,我正在尝试在鼠标和主体之间绘制一个矩形,使我希望线具有最大长度。
是指屏幕上两点之间的距离小于一定量时,矩形应位于鼠标和主体之间。如果不是,则矩形应在半径(从主体到鼠标的直线上的点)和主体之间。
[我正在使用一些矢量逻辑来计算绘制点,但是当我似乎进入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
编辑:
由于距离小于200,因此在球和鼠标之间绘制了一条线。
这里距离超过200,并且我们输入if语句,除非返回到200以下,否则不再画线。
谢谢!
当前,我正在尝试在鼠标和主体之间绘制一个矩形,所要捕获的是我希望该线具有最大长度。表示屏幕上两点之间的距离较小时...
[Vector2
具有limit
方法来限制长度,如果大于某个值。