如何将四个精灵旋转到这些精灵的焦点

时间:2017-08-02 12:38:06

标签: java android libgdx rotation

我写了以下代码:

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++);

我想旋转精灵,如:enter image description here 不幸的是,此代码不适用于此目的。如何改进我的代码?

编辑:

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

试试这个:

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();
}