我正在開發一款賽車遊戲。汽車在前進方向上自行移動。只有提供給用戶控件: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