0
在使用libgdx開發的小型遊戲中,我將矛作爲遊戲對象。 我使用Scene2D作爲Actor的一個子類實現了它們。長矛可以旋轉90度。我想讓我的形象中的「speartip」部分作爲「傷害」球員的一部分,杆身應該是無害的。所以當我構建我的矛對象時,我還構造了兩個矩形,它們覆蓋了矛的尖端和軸。但是當我的演員使用setRotation()
旋轉時,矩形顯然不會,因爲它們沒有「附加」到矛狀物體上。如何在libgdx中獲得旋轉角色的區域
你對如何處理這種東西有一些建議嗎?下面的代碼。
public TrapEntity(Texture texture, float pos_x, float pos_y, float width, float height, Vector2 center,
float rotation, Rectangle hurtZone, Rectangle specialZone) {
super(texture, pos_x, pos_y, width, height, center, rotation);
this.hurtZone = new Rectangle(hurtZone.getX(), hurtZone.getY(), hurtZone.getWidth(), hurtZone.getHeight());
this.specialZone = new Rectangle(specialZone.getX(), specialZone.getY(), specialZone.getWidth(), specialZone.getHeight());
}
和render方法在同一個類中。我用它來渲染「hurtZone」矩形的界限:
@Override
public void draw(Batch batch, float alpha){
super.draw(batch, alpha);
batch.end();
sr.setProjectionMatrix(batch.getProjectionMatrix());
sr.setTransformMatrix(batch.getTransformMatrix());
sr.begin(ShapeRenderer.ShapeType.Line);
sr.setColor(Color.RED);
sr.rect(hurtZone.getX(), hurtZone.getY(), hurtZone.getWidth(), hurtZone.getHeight());
sr.end();
batch.begin();
}
我在我的搜索中遇到過多邊形,但想知道是否有一個「更容易」的解決方案。另外,你可能有建議如何檢查我的紋理的哪一部分,例如感動?不,我有一個矩形的長矛,以及兩個長方形的杆身和尖端。在我將其作爲多邊形實現之前,是否有更好的方法來檢查是否觸摸了「小費」,例如即使紋理被旋轉,將觸摸座標轉換爲紋理座標? – Cuddl3s
你可能只需要幾個'Vector2'即可。您可能需要將紙筆放在紙上,但您大概可以使用符合矛的起源的'Vector2'和大致沿着矛尖的另一個'Vector2',然後嘗試一些自定義邏輯以獲得所需的結果。例如(讓我們稱它們爲'originVec2'&'tipVec2'),如果'tipVec2'在你的播放器內,但'originVec2'大於到播放器的一定距離,和/或'originVec2'和'tipVec2 '在一定範圍內,等等。這種東西只是歸結爲劇烈的搞亂和調整。 – hamham