【问题标题】:How to rotate four sprites to the focus of these sprites如何将四个精灵旋转到这些精灵的焦点
【发布时间】:2018-01-09 16:42:51
【问题描述】:

我写了以下代码:

int a=0, b=0, c=0, d=0;
sprite[number[0]].setPosition(160, 600);
        sprite[number[1]].setPosition(560, 600);
        sprite[number[2]].setPosition(360, 400);
        sprite[number[3]].setPosition(360, 800);
        seiten[number[4]].setPosition(-35, 0);
        seiten1[number[4]].setPosition(825, 0);
        sprite[number[0]].setOrigin(200,0);
        sprite[number[1]].setOrigin(-200,0);
        sprite[number[2]].setOrigin(0,-200);
        sprite[number[3]].setOrigin(0,-200);
        sprite[number[0]].setRotation(a++);
        sprite[number[1]].setRotation(b++);
        sprite[number[2]].setRotation(c++);
        sprite[number[3]].setRotation(d++);

我想像这样旋转精灵: 不幸的是,此代码不适用于此目的。如何改进我的代码?

编辑:

为了更好地理解: 我有十个不同颜色的精灵,其中四个显示在游戏屏幕上。巧合决定了将显示哪个精灵,但它们中的每个精灵都有不同的颜色。现在我想旋转图中显示的车道中的四个精灵。四个精灵应该打开粉红​​色的精灵,实际上我的代码中不存在。这个粉红色的精灵只是旋转中心的一个符号 (P(360|600))。四个精灵都在同一条车道上旋转。
使用我的代码,四个精灵旋转,但不在图像中显示的同一车道。我希望我的问题现在更清楚了。

【问题讨论】:

    标签: java android libgdx rotation


    【解决方案1】:

    我猜你可以使用 sprite.rotate() 并使用 sprite.setorigin() 将精灵原点设置为你想要旋转的点。

    【讨论】:

      【解决方案2】:

      试试这个:

      Sprite sprites[],centralSprite;
      float centerX=200,centerY=200,radius=100;
      SpriteBatch spriteBatch;
      
      @Override
      public void create() {
      
          spriteBatch=new SpriteBatch();
      
          Texture badlogic=new Texture("badlogic.jpg");
          centralSprite=new Sprite(badlogic);
          centralSprite.setSize(50,50);
          centralSprite.setPosition(centerX,centerY);
          centralSprite.setOriginCenter();
      
          sprites=new Sprite[4];
      
           for (int i=0;i<sprites.length;i++) {
              sprites[i] = new Sprite(badlogic);
              sprites[i].setSize(50,50);
              sprites[i].setRotation(90 * i);
              sprites[i].setPosition(centerX + radius * MathUtils.cosDeg(sprites[i].getRotation()),
                                     centerY + radius * MathUtils.sinDeg(sprites[i].getRotation()));
              sprites[i].setOriginCenter();
          }
      
      }
      
      @Override
      public void render() {
      
          Gdx.gl.glClearColor(1,0,1,1);
          Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
      
          spriteBatch.begin();
      
          for (int i=0;i<sprites.length;i++) {
              sprites[i].rotate(1);
              sprites[i].setPosition(centerX + radius * MathUtils.cosDeg(sprites[i].getRotation()),
                                     centerY + radius * MathUtils.sinDeg(sprites[i].getRotation()));
              sprites[i].draw(spriteBatch);
          }
      
          centralSprite.draw(spriteBatch);
          spriteBatch.end();
      }
      

      【讨论】:

      • 是否也可以只更改 setOrigin 中的数字以使精灵按我想要的方式旋转?我尝试了很多数字,但没有任何效果。
      • 我的解决方案不符合您的要求吗?
      • 不,不幸的是,这个解决方案不起作用,尤其是不适合我的目的。
      • 可能我不明白你的要求,你能解释一下你想要达到的目标吗
      • 我编辑了我的问题。我希望现在更容易理解。
      猜你喜欢
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      相关资源
      最近更新 更多