我正在LibGDX中制作一個游戲。現在,我正在研究從一個移動物體的身體當前位置向其移動的方向畫一條線。也許我的措辭并不正確,所以這里是我對我所講的內容的非常藝術的表述。
我遇到的問題是,垂直線總是比對角線長很多,而對角線總是比水平線長很多。我想要的是,無論方向如何,從物體中投射出來的線總是相同的長度。
下面是用于從物體主體的中心繪制線條的代碼。正如你所看到的,我正在對線條進行縮放(例如,縮放25.0f)。也許我可以用一個公式來根據方向動態地改變這個標度?
public class BodyMovementProjection implements Updatable {
public final body body;
public final ShapeRenderer shapeRenderer;
public boolean debugProjection = false;
public float scalar = 25.0f;
private final Vector2 posThisFrame = new Vector2();
private final Vector2 posLastFrame = new Vector2();
private final Vector2 projection = new Vector2();
private float[] debugColorVals = new float[4];
public BodyMovementProjection(Body body) {
this.body = body;
this.shapeRenderer = body.entity.gameScreen.shapeRenderer。
} // BodyMovementProjection建構式
@Override
public void update() {
body.aabb.getCenter(posThisFrame);
posLastFrame.set(posThisFrame).sub(body.bodyMovementTracker.getSpritePosDelta())。
projection.set(posThisFrame).sub(posLastFrame).scl(scalar).add(posLastFrame)。
如果(debugProjection) {
shapeRenderer.begin(ShapeRenderer.ShapeType.Line)。
shapeRenderer.setColor(debugColorVals[0], debugColorVals[1], debugColorVals[2], debugColorVals[3]) 。
shapeRenderer.line(posLastFrame, projection);
shapeRenderer.end()。
} // 如果
} // 更新
public void setDebugColorVals(float r, float g, float b, float a) {
debugColorVals[0] = r;
debugColorVals[1] = g。
debugColorVals[2] = b。
debugColorVals[3] = a。
} // setDebugColorVals
} // BodyMovementProjection
uj5u.com熱心網友回復:
在你縮放之前進行歸一化。 通過歸一化,你使方向矢量的長度為1個單位,而通過縮放25后,你得到一個每次都是25個單位的矢量,不管當前和之前的位置相差多遠。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/316541.html
標籤:


