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

LibGDX旋转精灵问题

吴靖
2023-03-14

好吧,我真的很困惑,我以前旋转过精灵,没有问题,比如当船在海洋中移动时旋转它,但是出于某种原因,这次我遇到了一个非常大的问题。所以我在资产文件中创建了一个纹理,但不是静态纹理。我使用以下方式加载纹理:

class Assets{
    Texture img;
    public Assets(){
        img = new Texture(Gdx.files.internal("images/PNG.png")

然后我通过调用来调用主类中的资产:

Assets assets = new Assets()

然后我有一个专门为这个主要角色设计的动画课程,因为他的动画与其他角色非常不同。

class Animations{
    Guy MYGUY;
    Texture firstTexture;
    ArrayList<Texture> running;
    Sprite CurrentSprite;
    public Animations(Texture standingStill, Guy myGuy){
        MYGUY = myGuy;
        firstTexture = standingStill;
        running = new ArrayList<Texture>();
        running.add(firstTexture);
        CurrentSprite = new Sprite(firstTexture);

    public void update (int direction, int state){
         CurrentSprite.setPosition(MYGUY.X, MYGUY.Y)
        // I have a switch here, but it does nothing yet because I haven't added in different actions for the character.
        //However I do have a switch for direction, because that is important right now
        switch(state){
        case Guy.LEFT:
            CurrentSprite.set rotation(180);
        //yes there are more, but even rotating 180 won't work correctly
        }

然后我有一个渲染类来绘制所有东西,我有对象MyGuy在一个名为myLand的世界对象中,我用以下方式绘制它:

myLand.GUY.animation.CurrentSprite(batch);

所以我的问题出现在旋转上,每当它旋转180度时,它似乎总是围绕坐标(0,0)旋转,而不是精灵的中心。所以它通常会在我向右移动5度的地方结束,但是如果我试着向左移动,它确实向后移动了两倍的距离,但是相机的位置保持不变,这个人通常会从屏幕的左边或右边消失。

共有3个答案

淳于烈
2023-03-14

不要旋转精灵,只需用这一行翻转它:

CurrentSprite.flip(true, false);

第一个布尔值是X翻转(当向左移动时,您希望设置为true),第二个是Y翻转。

宗沛
2023-03-14

尝试

sprite.setOriginCenter();

这应该会有帮助

杭令
2023-03-14

尝试使用Rotate(...)方法代替setRotation(...)。

使用setOrigin(widthSprite\2,heightSprite\2)该操作会旋转sprite本身。

 类似资料:
  • 现在我想把sprite的位置相应地放在我旋转的身体上。在这里我所做的 这是我怎么画的 当我运行我的代码时会发生奇怪的事情。我看到主体正确旋转,但是由于这一行所以sprite的位置始终与主体位置相同。我该怎么做呢?

  • 我想一起旋转一组精灵,多边形和矩形,图a)显示2个精灵,边界多边形和矩形,这组围绕大矩形中心旋转90度(两个矩形的联合)。 以下代码创建图b)。它不会围绕联合矩形的中心旋转精灵和多边形。 下面的代码创建了图c)。当我试图将精灵和多边形移动到矩形位置时,出现了对齐错误。 问题是旋转后如何将精灵与矩形对齐(即类似于图a,角度=0)。提示:问题出现是因为精灵在绘制时会旋转,因此精灵和矩形之间会错位对齐。

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

  • 我正在使用平铺地图编辑器创建一个简单的平铺地图。在我的地图中,我有几个矩形,如果我创建一个宽度为50,高度为10的矩形,并将其旋转正好90°,保存地图并将其加载到我的LibGDX项目中,形状会正确呈现——但是如果我使用随机角度,例如26°,然后我再次渲染地图,我没有得到所需的结果,事实上我得到了完全相反的所需角度。 我使用以下方法直接从地图读取平铺地图浮动: 数学。degRad将直接从地图属性读取

  • 当我旋转图像(图像类)时,我需要帮助解决一个小问题。 这个想法是旋转一个球形图像,移动是通过手指的触摸和拖动,它可能是顺时针的,也可能不是顺时针的,到目前为止,这是正确的。 我希望当球体的角度是90的倍数时会发生一些事情,问题是当我用手指旋转球体时,有时它太快了,以至于球体的角度不总是通过90的倍数,例如,如果它在87,当我移动手指时,它会在不接触90的情况下移动到94。 这是我的拖动旋转代码 我

  • 如果我将这个圆形精灵的身体应用于AngularImush,它会沿着它的中心旋转,这就是我想要的。但是它的碰撞蒙版固定装置(绿色)沿着它自己的中心旋转,而不是精灵的中心。我如何让它也沿着精灵的中心旋转,这样碰撞蒙版和精灵就保持同步? 例如,在下面的图片中,当圆圈旋转,红色部分到达左上角时,我希望绿色碰撞蒙版在#3的位置。但是发生了#2。我知道为什么会发生这种情况,但是我如何才能实现我在这里试图实现的