[英]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.