2017-08-02 2 views
4

Ich schrieb den folgenden Code drehen: enter image description here Leider ist dieser Code für diesen Zweck nicht funktioniert,:Wie vier Sprites auf den Fokus dieses Sprites

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

ich das Sprites wie drehen möge. Wie kann ich meinen Code verbessern?

EDIT:

Zum besseren Verständnis: Ich habe zehn Sprites mit verschiedenen Farben, vier von ihnen sind auf dem Spielbildschirm angezeigt. Die Übereinstimmung entscheidet, welches Sprite angezeigt wird, aber jedes Sprite von ihnen hat eine andere Farbe. Jetzt möchte ich die vier Sprites in der Spur drehen, die im Bild gezeigt wird. Die vier Sprites sollten den pinkfarbenen Sprite einschalten, der in meinem Code nicht existiert. Dieser rosa Sprite ist nur ein Symbol für das Zentrum der Rotation (P (360 | 600)). Die vier Sprites rotieren alle auf derselben Spur.
Mit meinem Code drehen sich die vier Sprites, aber nicht auf der gleichen Spur wie im Bild gezeigt. Ich hoffe meine Frage ist jetzt klarer.

Antwort

0

Ich denke, Sie könnten sprite.rotate() verwenden und den Sprite-Ursprung auf den Punkt setzen, den Sie mit sprite.setorigin() drehen möchten.

+0

Nein, das funktioniert nicht. – user8340536

0

Try this:

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

Ist es auch möglich, nur die Zahlen in setOrigin zu ändern, um die Sprites so zu drehen, wie ich will? Ich habe viele Nummern ausprobiert, aber nichts hat funktioniert. – user8340536

+0

Funktioniert meine Lösung nicht entsprechend Ihrer Anforderung? – Aryan

+0

Nein, leider funktioniert diese Lösung nicht, besonders nicht für meine Zwecke. – user8340536