簡體   English   中英

libgdx - 圍繞一個點旋轉碰撞

[英]libgdx - rotating collisions around a point

for (int i = 0; i < 13; i++) {
            circleSprites.get(i).setOrigin(circleSprites.get(4).getX(), circleSprites.get(4).getY());
            circleSprites.get(i).rotate(20 * delta);
            circleCollisions.get(i).setPosition(circleSprites.get(i).getX() + 1, circleSprites.get(i).getY() + 1);
        }
        for (int i = 13; i < 26; i++) {
            circleSprites.get(i).setOrigin(circleSprites.get(17).getX(), circleSprites.get(17).getY());
            circleSprites.get(i).rotate(-20 * delta);
            circleCollisions.get(i).setPosition(circleSprites.get(i).getX() + 1, circleSprites.get(i).getY() + 1);
        }

想要這樣的東西 精靈並沒有像預期的那樣旋轉,但我可以弄清楚。 但問題是 .rotate 只是在視覺上做到這一點,我檢查了坐標,它們保持不變。 那么如何為上圖所示的旋轉設置碰撞?

LibGDX 有一個 Intersector 類,在這些情況下很有用。

它有多種方法可以用於所有類型的幾何形狀來測試彼此的相交。

首先你需要給每個精靈一個圓圈

com.badlogic.gdx.math.Circle circle = new Circle(x,y,r);

然后用你的精靈移動它們,這樣我們就有了一個幾何表示來測試(這些圓將是我們檢查碰撞的對象,而不是精靈,所以我們需要始終用它們代表的精靈移動這些圓)。

然后在與 Intersector 類的每次更新中檢查所有圈子與您希望碰撞的事物,即

overlaps(Circle c, Rectangle r) 
overlaps(Circle c1, Circle c2) 

等等

https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/math/Circle.html

https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/math/Intersector.html

看到這個帖子...

Libgdx 的圓和多邊形碰撞

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM