[英]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
看到這個帖子...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.