0
public void onControlChange(final BaseOnScreenControl pBaseOnScreenControl, final float pValueX, final float pValueY) {
            final Body carBody = CityRacerActivity.this.mCarBody;

            final Vector2 velocity = Vector2Pool.obtain(pValueX * 5, pValueY * 5);
            carBody.setLinearVelocity(velocity);
            Vector2Pool.recycle(velocity);

            final float rotationInRad = (float)Math.atan2(-pValueX, pValueY);
            carBody.setTransform(carBody.getWorldCenter(), rotationInRad);

            CityRacerActivity.this.mCar.setRotation(MathUtils.radToDeg(rotationInRad));
        }

したがって、これは部分的に機能します。

OnControlChange はスプライトを正しい方向に動かしますが、コントロールを放すと、車両が毎回上向きに動くように見えます。

私はandengineを使用してAndroidを使用しています。

私のコードは racergameactivity の例に基づいていますが、このエラーは例自体に既に存在しているようです。

4

1 に答える 1

2
        public void onControlChange(final BaseOnScreenControl pBaseOnScreenControl, final float pValueX, final float pValueY) {
            final Body carBody = CityRacerActivity.this.mCarBody;

            final float rotationInRad = (float)Math.atan2(-pValueX, pValueY);

            if ((pValueX == 0) && (pValueY == 0))
            {
                    //Don't turn the body/sprite of the car


            }else
            {
                    carBody.setTransform(carBody.getWorldCenter(), rotationInRad);
                    //turn the car body in the direction of movement
                    CityRacerActivity.this.mCar.setRotation(MathUtils.radToDeg(rotationInRad));
            }

            //set the velocity
            final Vector2 velocity = Vector2Pool.obtain(pValueX * 5, pValueY * 5);
            carBody.setLinearVelocity(velocity);
            Vector2Pool.recycle(velocity);
        }

これは私が望んでいたように機能しますが、これが私がそれを処理する方法であるかどうかはわかりません。

于 2012-08-28T22:56:32.570 に答える