如何在andenigne中旋转三维透视相机等距平铺地图

时间:2013-04-02 13:21:26

标签: android andengine

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

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视图.i想要在3d透视中旋转。我可以在andenigne GLES2.0中以3d透视旋转相机。 请建议我

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我曾多次在AndEngine论坛中偶然发现this tutorial,其中指出可以旋转摄像机以远距离显示远处的物体(较小)。它是为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轴上的位置。但如果有人设法旋转相机,我当然想知道更多!