使用模拟控制器旋转Sprite

时间:2013-10-25 18:35:43

标签: android box2d andengine 2d-games google-play-games

您好我正在使用andengine开发游戏,现在我希望我的精灵可以使用OnScreenAnalogController进行旋转。我已初始化它,但现在我无法弄清楚如何完成剩下的工作。任何示例代码或任何内容都将非常感激。

提前致谢。

P.S旋转应该在精灵的轴周围。当我放开控制器时,我希望精灵面向它旋转的方向而不是最初的旋转。

2 个答案:

答案 0 :(得分:0)

对于精灵旋转,我们覆盖applyRotation()方法 - >

Sprite sprite = new Sprite(0, 0, textureRegionForMySprite, getVertexBufferObjectManager()){
    @Override
    protected void applyRotation(GLState pGLState) {
        pGLState.rotateModelViewGLMatrixf(this.mRotation, 0, 1, 0);
    }
};

答案 1 :(得分:0)

我找到了使用此代码的解决方案

    mAnalogController = new AnalogOnScreenControl(90, cameraHeight - 130, mCamera, mControllerTextureRegion, mKnobTextureRegion, 0.01f, getVertexBufferObjectManager(), new IAnalogOnScreenControlListener(){

        @Override
        public void onControlChange(
                BaseOnScreenControl pBaseOnScreenControl, float pValueX,
                float pValueY) {

            //rect.registerEntityModifier(new RotationByModifier(0.5f, MathUtils.radToDeg((float) Math.atan2(-pValueX, pValueY))));

            rect.registerEntityModifier(new RotationModifier(0.1f, rect.getRotation(), MathUtils.radToDeg((float) Math.atan2(pValueX, -pValueY))));
        }

        @Override
        public void onControlClick(
                AnalogOnScreenControl pAnalogOnScreenControl) {
            // TODO Auto-generated method stub

        }

    });

唯一的问题是,当我释放控制器时,它会回到初始位置并旋转,这不是我想要的。关于如何做到这一点的任何想法?