我正在开发一款赛车游戏。汽车在前进方向上自行移动。只有提供给用户控件:Android:直线加速不减速
当玩家移动他设备的权利,我的意思是设备的线性运动,该车将右转。
同样左转。
我为此使用Sensor.TYPE_LINEAR_ACCELERATION
。该问题是:
- 当我移动设备到右边,车子向右移动,然后又回到原来的位置。
我觉得这是因为当我开始移动设备,有一些积极的加速,所以车子向右转。但是,当设备停止时,也会有一些负向加速(减速),从而导致汽车左转。
我怎样才能达到我想要的?
我正在开发一款赛车游戏。汽车在前进方向上自行移动。只有提供给用户控件:Android:直线加速不减速
当玩家移动他设备的权利,我的意思是设备的线性运动,该车将右转。
同样左转。
我为此使用Sensor.TYPE_LINEAR_ACCELERATION
。该问题是:
我觉得这是因为当我开始移动设备,有一些积极的加速,所以车子向右转。但是,当设备停止时,也会有一些负向加速(减速),从而导致汽车左转。
我怎样才能达到我想要的?
我还没有在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;
}
你能解释一下我该如何使用它距离映射到我的汽车控制? –
我每次都得到完全随机的距离值。 –
@SalmanYounas它应该是距离的变化。所以,如果你正在沿x轴工作,你应该能够将这些值添加到汽车沿着该轴的位置('位置+ =距离')。虽然,这些应该是真实世界的距离,所以你可能想缩小它们以便在你的游戏中使用(即'position + =(distance * scalefactor)')。 – Bryan
使用陀螺仪检测方向而不是加速度。 – njzk2
我不想旋转运动。我想要线性运动。一边保持平面一边移动设备。 –
不能这样做。你不能区分恒速和没有速度(因为这是一个恒定的速度)(尽管这个词中的所有游戏都使用旋转,但为什么不是你的?) – njzk2