我正在制作等距平铺地图游戏。在介绍部分,我想展示完整的游戏域,所以我使用了
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轴上的位置。但我当然想知道更多,如果有人设法旋转相机!