LibGDX 1.5 围绕其中心旋转精灵
LibGDX 1.5 rotating sprite around its center
我正在尝试围绕其中心旋转精灵,但无论我尝试什么,我总是让它绕着一个角旋转。我以这种方式创建精灵:
Pixmap pixmap = new Pixmap(64, 64, Format.RGBA8888);
pixmap.setColor(153/255f, 255/255f, 153/255f, 255/255f);
pixmap.fillTriangle(0, 0, 0, 32, 32, 16);
Texture texture = new Texture(pixmap);
triangle = new Sprite(texture);
triangle.setSize(3, 3);
triangle.setOriginCenter();
triangle.setPosition(0 - triangle.getWidth() / 2.0f, 0 - triangle.getHeight() / 2.0f);
然后我以这种方式每隔 deltaTime 旋转一次:
triangle.rotate(90 * deltaTime);
并像这样渲染它:
batch.begin();
worldController.triangle.draw(batch);
batch.end();
我正在按照"Learning LibGDX Game Development, Second edition"一书中的示例进行操作,因此我有一个WorldController 和一个WorldRenderer。我错过了什么?将精灵原点设置为中心并绘制它还不够吗?这是我的行为:
而我希望它旋转 "in place"。
看来你没上线
triangle.setOrigin(originX, originY);
(originX, originY) 是三角形的中心坐标。
编辑:您当前的代码不起作用的原因是因为当前的中心原点是 (0, 0)。
(我不确定为什么,但当我测试你的代码时它似乎是中心)。
您可以使用
将日志添加到您的代码中
Gdx.app.log("Tag", "LogInformation");
这是你应该做的
originX = (0+32)/2;
originY = (0+32)/2;
或
originX = (lowestXValue+highestXValue)/2;
originY = (lowestYValue+heightYValue)/2;
Here 是 Sprite 上的 API,它可以在 rotate()
上帮助你更多
好的,我找到问题了。起初我用 32x32 大小声明了像素图并相应地填充了三角形。然后我把它弄乱了,把大小改为64x64,但是三角形是用旧坐标画的,因此占据了整个像素图的左下角"subsquare",这就是它旋转的原因。
我正在尝试围绕其中心旋转精灵,但无论我尝试什么,我总是让它绕着一个角旋转。我以这种方式创建精灵:
Pixmap pixmap = new Pixmap(64, 64, Format.RGBA8888);
pixmap.setColor(153/255f, 255/255f, 153/255f, 255/255f);
pixmap.fillTriangle(0, 0, 0, 32, 32, 16);
Texture texture = new Texture(pixmap);
triangle = new Sprite(texture);
triangle.setSize(3, 3);
triangle.setOriginCenter();
triangle.setPosition(0 - triangle.getWidth() / 2.0f, 0 - triangle.getHeight() / 2.0f);
然后我以这种方式每隔 deltaTime 旋转一次:
triangle.rotate(90 * deltaTime);
并像这样渲染它:
batch.begin();
worldController.triangle.draw(batch);
batch.end();
我正在按照"Learning LibGDX Game Development, Second edition"一书中的示例进行操作,因此我有一个WorldController 和一个WorldRenderer。我错过了什么?将精灵原点设置为中心并绘制它还不够吗?这是我的行为:
而我希望它旋转 "in place"。
看来你没上线
triangle.setOrigin(originX, originY);
(originX, originY) 是三角形的中心坐标。
编辑:您当前的代码不起作用的原因是因为当前的中心原点是 (0, 0)。
(我不确定为什么,但当我测试你的代码时它似乎是中心)。 您可以使用
将日志添加到您的代码中Gdx.app.log("Tag", "LogInformation");
这是你应该做的
originX = (0+32)/2;
originY = (0+32)/2;
或
originX = (lowestXValue+highestXValue)/2;
originY = (lowestYValue+heightYValue)/2;
Here 是 Sprite 上的 API,它可以在 rotate()
上帮助你更多好的,我找到问题了。起初我用 32x32 大小声明了像素图并相应地填充了三角形。然后我把它弄乱了,把大小改为64x64,但是三角形是用旧坐标画的,因此占据了整个像素图的左下角"subsquare",这就是它旋转的原因。