float rotateBy= (float) (bird.clockWise?(-1):(1)*1/deltaTime*(Math.PI/180))/30;
float rotatedX = (float) (Math.cos(rotateBy) * (transform.position.x - bird.center.x) - Math.sin(rotateBy) * (transform.position.y-bird.center.y) + bird.center.x);
float rotatedY = (float) (Math.sin(rotateBy) * (transform.position.x - bird.center.x) + Math.cos(rotateBy) * (transform.position.y - bird.center.y) + bird.center.y);
transform.position.set(rotatedX, rotatedY);
Gdx.app.log("RenderingSystem","Rotate:"+rotatedX);
batch.draw(texture.textRegion,transform.position.x,transform.position.y,bird.center.x,bird.center.y
,texture.textRegion.getRegionWidth(),texture.textRegion.getRegionHeight(),1,1, MathUtils.radiansToDegrees * rotateBy);
我写了上面的代码来围绕任何一点旋转纹理。我的问题是,当纹理围绕中心点旋转时,纹理不会被中心点旋转。
答案 0 :(得分:0)
使用精灵。并根据您想要旋转的点改变中心。
https://github.com/libgdx/libgdx/wiki/Spritebatch,-Textureregions,-and-Sprites
https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Sprite.html
您正在寻找的是setCenter
功能。将中心设置为图像中圆圈的中心(注释中的图像)。然后使用sprite.draw(...)
函数。
Sprites非常有用,可以节省您的时间。但是,您可能需要更改一些代码和/或删除一些代码。