精灵旋转的延迟

时间:2012-08-28 22:58:47

标签: java android controls andengine

我正试图使这种车辆运动看起来更加真实。

除了旋转的瞬间变化之外,这种方法很完美。

它可以立即做到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);
}

我希望它能像驾驶汽车一样玩得更开心。

1 个答案:

答案 0 :(得分:2)

方法setRotation立即改变了身体的“面向方向”。

您可以改用setAngularVelocity。它也会让你的游戏更加真实,因为汽车无法真正在现场旋转,因此在物理世界更新过程中,当汽车按照你的常规速度移动时,汽车将会旋转。所以它随着它的移动而旋转,以及我们这个世界正在发生的事情。

我会根据转弯的锐度给setAngularVelocity一个参数,90度应该是最大的IMO(但是在你自己的测试之后决定)。