如何四个精灵旋转到这些精灵

问题描述:

的焦点我写了下面的代码:如何四个精灵旋转到这些精灵

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 不幸的是,这段代码doesn't工作。我如何改进我的代码?

编辑:

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

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

+0

不,那是行不通的。 – user8340536

试试这个:

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

是否也可以改变setOrigin中的数字来让小精灵按我的意愿旋转?我尝试了很多数字,但没有成功。 – user8340536

+0

我的解决方案是否不符合您的要求? – Aryan

+0

不,不幸的是,这个解决方案不起作用,特别是不适合我的目的。 – user8340536