2012-08-28 272 views
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); 
} 

我希望它能像駕駛汽車一樣玩得更開心。

+0

你在哪裏調用這個方法? –

+0

此方法用作引擎的一部分。它在觸摸屏上創建一個數字遊戲杆。 –

回答

2

方法setRotation立即改變身體的「面向」。

您可以改用setAngularVelocity。這也會讓你的遊戲更加真實,因爲汽車不能真正旋轉,所以在物理世界更新時,汽車會以角速度旋轉,同時它也會按照常規速度移動。所以它隨着它的移動而旋轉,以及我們這個世界發生了什麼。

我給setAngularVelocity一個參數取決於轉彎的尖銳程度,90度應該是最大的IMO(但是在你自己的測試後決定)。