繁体   English   中英

LibGDX ShapeRenderer 拒绝渲染

[英]LibGDX ShapeRenderer refusing the render

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

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

我正在使用一些向量逻辑来计算要绘制的点,但是当我似乎进入我的 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,这里正在绘制球和鼠标之间的一条线。

距离超过 200 时不绘制线

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

谢谢!

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

Vector2 dir = new Vector(mousePos).sub(ballPosition)
dir.limit(200f)
sr.rectLine(ballPosition, dir.add(ballPosition), 4f);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM