如何旋转三维透视相机等距平铺地图在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视图,我想在3d视角中旋转,我如何在andengine GLES2.0中旋转3d视角的相机?

你不能在3D中旋转你的相机。3D的出现是由于艺术作品是透视绘制的。旋转美术作品并不会改变美术作品的绘制方式,就像旋转一张画着图画的纸不会导致3D变换一样。要在3D中旋转,你需要使用3D引擎。

我在AndEngine论坛上偶然发现了这个教程,在那里它说可以旋转相机来显示更远(更小)的远处物体。它是为AndEngine的GLES1制作的,但它应该可以适应GLES2。

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

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

如果你能像教程中描述的那样实现相机旋转,再加上z轴,你应该会有一个非常逼真的3D效果。

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

最新更新