[英]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.