【问题标题】:libgdx - rotating collisions around a pointlibgdx - 围绕一个点旋转碰撞
【发布时间】:2016-05-11 14:06:58
【问题描述】:
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! 之类的东西,精灵没有像 indended 那样旋转,但我可以弄清楚。但问题是 .rotate 只是视觉上的,我检查了坐标,它们保持不变。那么如何为上图的旋转设置碰撞呢?

【问题讨论】:

  • 能否请您更新并用更多文字和图片详细解释您的问题。你的问题不是很清楚。

标签: android libgdx


【解决方案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

看这篇文章...

Circle and Polygon Collision with Libgdx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多