0

この車両の動きをよりリアルに見せようとしています。

これは、回転がどれだけ瞬間的であるかを除いて、完璧に機能します。

それは即座に180を行うことができます。こんなに早く回ってほしくない。

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);
}

車を運転するような遊びをもっとしたいです。

4

1 に答える 1

2

この方法setRotationでは、体の「向き」がすぐに変わります。

代わりに使用できますsetAngularVelocity。また、車はその場で実際に回転できないため、ゲームがよりリアルになります。そのため、角速度を使用すると、物理学の世界の更新中に車が回転し、通常の速度に従って移動します。それで、それは動くにつれて回転します、そしてそれは私たちの世界で起こっていることです。

ターンの鋭さによってパラメータを指定しますsetAngularVelocity。90度が最大IMOになるはずです(ただし、独自のテストの後で決定してください)。

于 2012-08-29T15:32:10.017 に答える