我写了以下代码:
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))。四个精灵全部在同一车道上旋转 使用我的代码,四个精灵旋转但不在图像中显示的相同泳道中。我希望我的问题现在更清楚了。
答案 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();
}