Android:没有减速的线性加速度

时间:2016-04-25 13:41:09

标签: android

我正在开发一款赛车游戏。汽车在前进方向上自行移动。仅向用户提供 2个控件

  • 当玩家将设备向右移动时,我指的是设备的线性移动,汽车将向右转。

  • 左转也一样。

我为此目的使用Sensor.TYPE_LINEAR_ACCELERATION问题是:

  • 当我将设备向右移动时,汽车向右移动,然后回到原来的位置。

我认为这是因为当我开始移动设备时,会有一些正加速度,所以汽车向右转。但是当设备停止时,也有一些负加速度(减速度),这会导致汽车向左转。

我如何实现我的目标?

1 个答案:

答案 0 :(得分: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;
}