2016-04-25 136 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