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);
}
想要类似this!之类的精灵不会像吟唱一样旋转,但我可以想出来。但问题是.rotate只是在视觉上做到了,我检查了坐标并保持不变。那么如何设置如上图所示的旋转碰撞?
答案 0 :(得分:1)
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
看到这篇文章......