gpt4 book ai didi

java - 如何在 Libgdx 中旋转矩形?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:27 25 4
gpt4 key购买 nike

我将我的 Sprite 旋转了 90 度,我想对我的矩形做同样的事情以便能够将它们用于碰撞,但是 rotate() 方法在矩形上不可用。

这是我做的:

treeSpr=new Sprite(new Texture(Gdx.files.internal("tree.png")));
treeSpr.setPosition(250,700);
treeSpr.rotate(90f);

//Rectangle
treeRect=new Rectangle(treeSpr.getX(),treeSpr.getHeight(),
treeSpr.getWidth(),treeSpr.getHeight());

最佳答案

另一个答案基本正确;但是,我在使用该方法定位多边形时遇到了一些问题。只是一些澄清:

当使用相交检测碰撞时,LibGDX 不支持旋转的矩形。如果您需要旋转的矩形,您应该使用 Polygon用于碰撞检测。

构建一个矩形多边形:

polygon = new Polygon(new float[]{0,0,bounds.width,0,bounds.width,bounds.height,0,bounds.height});

如果要旋转多边形,请不要忘记设置多边形的原点:

polygon.setOrigin(bounds.width/2, bounds.height/2);

现在您可以旋转碰撞多边形:

polygon.setRotation(degrees);

此外,在您的代码中的某处,您可能希望更新碰撞多边形的位置以匹配您的 Sprite :

polygon.setPosition(x, y);

我们甚至可以在屏幕上绘制多边形(用于调试目的):

drawDebug(ShapeRenderer shapeRenderer) {
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.polygon(polygon.getTransformedVertices());
shapeRenderer.end();
}

碰撞检测:

Intersector 的 overlapConvexPolygons() :

boolean collision = Intersector.overlapConvexPolygons(polygon1, polygon2)

如另一个答案中所述,此方法仅在以下情况下有效:

  • 使用凸多边形,矩形是
  • 执行多边形到多边形检查,例如:您不能混合使用矩形和多边形

关于java - 如何在 Libgdx 中旋转矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30554629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com