簡體   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