0

我正在研究等距平铺地图游戏。在介绍中我想展示完整的游戏领域。所以我使用了

this.mCamera = new ZoomCamera(CAMERA_WIDTH, CAMERA_HEIGHT, CAMERA_WIDTH, CAMERA_HEIGHT) {
    @Override
    public void onApplySceneBackgroundMatrix(final GLState pGLState) {
        final float widthRaw = this.getWidthRaw();
        final float heightRaw = this.getHeightRaw();

        pGLState.orthoProjectionGLMatrixf(0, widthRaw, heightRaw, 0, getZNear(), getZFar());
    }

    @Override
    public void onUpdate(float pSecondsElapsed) {
        if (timeCounter >= 1) {
            mCamera.setRotation(i);
            timeCounter = 0;
            i=i+1;
        }
        timeCounter += pSecondsElapsed;
        super.onUpdate(pSecondsElapsed);
    }
};

但它的旋转 2d 视图。我想以 3d 透视图旋转。如何在 andenigne GLES2.0 中以 3d 透视图旋转相机。请建议我

4

2 回答 2

1

您无法以 3D 方式旋转相机。3D 的出现是由于艺术品是透视绘制的。旋转图稿不会导致图稿改变其绘制方式,就像旋转一张上面有图画的纸会导致 3D 变换一样。要在 3D 中旋转,您需要使用 3D 引擎。

于 2013-04-03T00:12:57.500 回答
1

有几次我在 AndEngine 论坛上偶然发现了这个教程,其中指出可以旋转相机以显示更远的物体(更小)。它是为 AndEngine GLES1 制作的,但应该可以使其适应 GLES2。

AndEngine 知道 z 轴。该轴上的位置是根据您将 Sprite 附加到场景的顺序自动设置的。但是,您应该手动设置它。在大多数情况下,每次 Sprite 更改其位置时,根据 y 位置(z 轴 = y 轴)设置 z 轴就足够了。

public class YourSprite extends Sprite{
     ...
     @Override
     setPosition(float x, float y){
        super.setPosition(x,y);
        this.setZIndex(y);
     }
}

如果您随后设法按照教程中的说明实现相机旋转,连同 z 轴,您应该有一个非常逼真的 3D 效果。

但是,我从未尝试过该教程,因为大多数使用鸟瞰图的游戏(作为您提供的 youtube 链接中的游戏)不需要真正的消失点,因为显示器很可能很小,所以玩家反正不会注意到。所以我坚持改变z轴上的位置。但如果有人设法旋转相机,我当然想知道更多!

于 2013-04-04T19:41:28.290 回答