当前位置: 首页 > 知识库问答 >
问题:

Libgdx盒2D主体围绕点精灵位置旋转

桂坚
2023-03-14

PolygonShape shape = new PolygonShape();
shape.setAsBox(1.8f / PPM, 0.2f / PPM, new Vector2(2,2), 0); // vector2 is

现在我想把sprite的位置相应地放在我旋转的身体上。在这里我所做的

sprite.setOrigin(sprite.getWidth() / 2, sprite.getHeight() / 2);
sprite.setPosition(body.getPosition().x * 32 - sprite.getWidth() / 2, body.getPosition().y * 32 - sprite.getHeight() / 2);

这是我怎么画的

public void draw(SpriteBatch sb){
        System.out.println(body.getWorldCenter());
        sprite.setRotation(body.getAngle() * MathUtils.radiansToDegrees);
        sprite.draw(sb);
    }

当我运行我的代码时会发生奇怪的事情。我看到主体正确旋转,但是由于这一行sprite.setOrigin(sprite.getWidthe()/2,sprite.getHeight()/2);所以sprite的位置始终与主体位置相同。我该怎么做呢?

共有1个答案

麹承
2023-03-14

重要提示:box2d类型的Box/Circle主体以其位置为中心,而其他类型的主体则不是。

如果您想要使您的旋转与sprite同步,您应该将sprite原点定位在主体位置上,然后旋转。

例如:如果你的身体在位置0,0,而精灵的原点是1,1,你应该将精灵定位在位置-1,-1,以便两者同步旋转!

 类似资料:
  • 在那里你可以看到我的多边形,我使用我的动态游戏对象 我必须把这个红点左下角放在这个多边形的中间。 但是我如何计算我的sprite的x/y? 通常我会说 和sprite的定位如下所示: 但是现在这个多边形是不可能的,因为body phyiscs编辑器通常将body的原点放在X、Y0和右上部的顶点上,就像你在上面贴出的图片中看到的一样。但在我的例子中,身体的原点(红点)被放置在这个多边形中间的某个地方

  • 我在下面有一个类,我将其附加到一个对象上,以使其围绕其轴旋转。我把雪碧的枢轴通过检查员送来了。 这正是我想要的效果,但是我遇到的问题是,每当我触摸并拖动它,然后再次触摸并拖动它,它就会捕捉到一个新的位置。 我想让它做的是,当它旋转,然后再次旋转时,精灵保持其相同的旋转,而不是捕捉到一个新的位置,我想精灵的角度重置为0。接下来,我想让角度持续旋转。所以如果我朝正方向旋转,角度应该在正方向上不断增加,

  • 好吧,我真的很困惑,我以前旋转过精灵,没有问题,比如当船在海洋中移动时旋转它,但是出于某种原因,这次我遇到了一个非常大的问题。所以我在资产文件中创建了一个纹理,但不是静态纹理。我使用以下方式加载纹理: 然后我通过调用来调用主类中的资产: 然后我有一个专门为这个主要角色设计的动画课程,因为他的动画与其他角色非常不同。 然后我有一个渲染类来绘制所有东西,我有对象在一个名为的世界对象中,我用以下方式绘制

  • 精灵位置 现在你知道了怎么创建和显示一个精灵,让我们学习如何定位他们的位置和改变他们的大小 在最早的示例里那个猫的精灵被放在了舞台的左上角。它的x和y坐标都是0。你可以通过改变它的x和y坐标的值来改变他们的位置。下面的例子就是你通过设置x和y为96坐标让它在舞台上居中。 cat.x = 96; cat.y = 96; 在你创建这个精灵之后,把这两行代码放进setup方法。 function set

  • 问题内容: 我有一个512x512像素的2D图像,我想在某个原点(旋转中心)以某个角度旋转。一直以来,我都使用Scipy的旋转方法来旋转图像。但是,我迷迷糊糊,因为旋转始终围绕图像的中心进行。对于512x512像素,旋转中心应围绕点(x,y)128,128。如何使用自定义旋转中心旋转图像,比方说(x,y)20,128? 问题答案: 如果不能使用OpenCV,则可以使用NumPy()和SciPy()

  • 抱歉,因为这是一个垃圾问题,但是我完全不知道最好的方法。我相信一定有一些内在的或常见的做法,但我找不到它,谷歌没有发现任何有价值的东西。 我有一个javafx场景,其中有许多< code >圆圈 (以下命名是为了说明我试图达到的效果) 所有位置: 在 600 x 600 的场景中。 我需要将物体放置在物体周围。我不在乎在哪里,只要它们与月球的距离并且不接触。 我最初循环遍历每个对象,检查冲突并使用