1

我曾在 Opengl 的 3d 图形应用程序中处理相机控件。但是我不得不说在playn中创建一个带有顶视图的相机,旋转和平移在我看来对于图层的概念来说真的很难。如果有人能给我们举个例子,那就太好了!

谢谢

4

1 回答 1

1

我是新手,遇到了同样的问题。我在寻找答案时遇到了这个线程。我假设您正在寻找 3D 答案,我正在使用 2D。3D 解决方案可能类似,但我不知道图层在 3d 中是如何工作的,所以我可能是错的。无论如何,这就是我发现的。

问题是图层上的翻译是一次性完成的。这意味着任何旋转都是围绕原点完成的,因此如果要显示特定位置的旋转视图,则必须计算旋转后该位置的位置,然后将图层的平移设置为旋转位置。

我将此添加到展示项目中的豌豆演示中以进行测试。

private void setCameraLocation(Vec2 vec, float rot) {
vec = new Vec2(-vec.x/physUnitPerScreenUnit, -vec.y/physUnitPerScreenUnit);
Transform trany = new Transform();
trany.set(new Vec2((PlayN.graphics().width()/2f),(PlayN.graphics().height()/2f)), -rot);
vec = Transform.mul(trany, vec);
worldLayer.setRotation(-rot);
worldLayer.setTranslation(vec.x,vec.y);
}

就像我说的,可能不是您要寻找的答案,但它可能会帮助其他人,或者至少为您指明一个方向。

于 2012-12-06T17:23:41.547 回答