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 回答