[英]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,我们输入 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.