我正在开发一款赛车游戏。汽车在前进方向上自行移动。仅向用户提供 2个控件:
当玩家将设备向右移动时,我指的是设备的线性移动,汽车将向右转。
左转也一样。
我为此目的使用Sensor.TYPE_LINEAR_ACCELERATION
。 问题是:
我认为这是因为当我开始移动设备时,会有一些正加速度,所以汽车向右转。但是当设备停止时,也有一些负加速度(减速度),这会导致汽车向左转。
我如何实现我的目标?
答案 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;
}