2016-04-25 134 views
-1

我正在开发一款赛车游戏。汽车在前进方向上自行移动。只有提供给用户控件:Android:直线加速不减速

  • 当玩家移动他设备的权利,我的意思是设备的线性运动,该车将右转。

  • 同样左转。

我为此使用Sensor.TYPE_LINEAR_ACCELERATION。该问题是:

  • 当我移动设备到右边,车子向右移动,然后又回到原来的位置。

我觉得这是因为当我开始移动设备,有一些积极的加速,所以车子向右转。但是,当设备停止时,也会有一些负向加速(减速),从而导致汽车左转。

我怎样才能达到我想要的?

+0

使用陀螺仪检测方向而不是加速度。 – njzk2

+0

我不想旋转运动。我想要线性运动。一边保持平面一边移动设备。 –

+0

不能这样做。你不能区分恒速和没有速度(因为这是一个恒定的速度)(尽管这个词中的所有游戏都使用旋转,但为什么不是你的?) – njzk2

回答

1

我还没有在Android上使用Sensors,但加速应该是负面的,因为设备停下来。您的代码应基于每个之间的时间间隔来解决此问题SensorEvent

private long previousTimestamp = 0; 

private double velocity = 0; 

public double getDistance(float acceleration, long timestamp) { 
    double time = (timestamp - previousTimestamp)/1E9; 
    previousTimestamp = timestamp; 

    double distance = (velocity * time) + (0.5 * (acceleration * (time * time))); 
    velocity += acceleration * time; 

    return distance; 
} 
+0

你能解释一下我该如何使用它距离映射到我的汽车控制? –

+0

我每次都得到完全随机的距离值。 –

+0

@SalmanYounas它应该是距离的变化。所以,如果你正在沿x轴工作,你应该能够将这些值添加到汽车沿着该轴的位置('位置+ =距离')。虽然,这些应该是真实世界的距离,所以你可能想缩小它们以便在你的游戏中使用(即'position + =(distance * scalefactor)')。 – Bryan