Как создать вертикальный фон параллакса в android andengine

Я разрабатываю игру в andegine и хочу создать фон параллакса, который перемещается сверху вниз в портретном режиме, но мой параллакс перемещается справа налево или слева направо. Я установил параметры двигателя на PORTRAIT_FIXED ИЛИ PORTRAIT_SENSOR. как мне выполнить эту задачу? Я искал параметры AutoParallax и ParallaxEntity, но нет возможности установить портретный и ландшафтный режим параллакса.


person Furqan Ali    schedule 05.11.2014    source источник
comment
Вы можете использовать горизонтальный: класс ParallaxBackground. скопируйте его в другой класс и измените следующий код: Функция ParallaxBackground.ParallaxEntity.onDraw(): final float cameraHeight = pCamera.getHeight(); окончательный float shapeHeightScaled = this.mAreaShape.getHeightScaled(); float baseOffset = (pParallaxValue * this.mParallaxFactor) % shapeHeightScaled; в то время как (baseOffset › 0) { baseOffset -= shapeHeightScaled; } pGLState.translateModelViewGLMatrixf(0, baseOffset, 0); float currentMaxY = baseOffset; ... (больше нет места, не могу отформатировать код, извините!)   -  person voodoo98    schedule 10.11.2014


Ответы (1)


Только что нашел это - http://www.andengine.org/forums/post306324.html#p31347

Парень создал 2 новых класса AutoVerticalParallaxBackground и VerticalParallaxBackground, которые делают именно то, что вы хотите! (Я использую его). Так что вы можете просто использовать VerticalParallaxBackground или и то, и другое, в зависимости от желаемого результата :).

Фон вертикального параллакса может быть реализован как:

mVerticalParallaxBackground = new VerticalParallaxBackground(0, 0, 0);
    mVerticalParallaxBackground.attachVerticalParallaxEntity(new VerticalParallaxEntity(-5.0f,
            new Sprite(0, SCREEN_HEIGHT
                    - mResourceManager.mParallaxLayerRoad.getHeight(),
                    mResourceManager.mParallaxLayerRoad,
                    mVertexBufferObjectManager)));

setBackground(mVerticalParallaxBackground);

Мой пример использования этого (для AutoVerticalParallaxBackground):

mAutoVerticalParallaxBackground
            .attachVerticalParallaxEntity(new VerticalParallaxEntity(-5.0f,
                    new Sprite(0, SCREEN_HEIGHT
                            - mResourceManager.mParallaxLayerRoad
                                    .getHeight(),
                            mResourceManager.mParallaxLayerRoad,
                            mVertexBufferObjectManager)));

    setBackground(mAutoVerticalParallaxBackground);

Я не заслуживаю похвалы за этот ответ. Я размещаю его здесь, чтобы другие люди могли легко найти его!

person sij_a    schedule 26.09.2015