2013-01-17 67 views
1

我正在研究一種簡單的「停車類型」的遊戲,用戶在汽車中駕駛時必須將其停放在指定的地點。計算相對旋轉

雖然它實際上工作,唯一的問題是,我需要找出汽車停在哪個方向。 我不希望用戶隨意停放汽車,但汽車應朝上或朝下。

我試圖用這個檢查,看看有什麼輪換車過,但是這似乎有點太複雜

var relativeRot = this.rotation % 360; 
if((this._speed <= 0.02 && this._speed >= -0.02) && ((relativeRot <= 5 && relativeRot >= 355) || (relativeRot >= 175 && relativeRot <= 185) || (relativeRot <= -175 && relativeRot >= -185) || (relativeRot <= -5 && relativeRot >= -355))) { 

會不會有檢查這個更簡單的方法?應該有5度的小幅度,因爲它不一定是完美的。

+1

我覺得這已經可以被認爲是「容易」,雖然你可能需要更加小心,例如'(relativeRot <= 5 && relativeRot> = 355)'永遠不會是'true'。 – Passerby

回答

1

您可以通過採取模90度有點簡化它:

var relativeRot = this.rotation % 360; 
if (Math.abs(this._speed) <= 0.02) { 
    var cornerRot = (relativeRot + 360) % 90; // should be positive 
    if (Math.abs(cornerRot - 45) >= 40) { 
     // consider car parked... 
    } 
} 
+0

非常感謝,這個作品完美,我只用%180而不是%90,因爲我只需要2個方向而不是4個。 –

+0

啊,當然可以。我在你的'if'陳述中看到過很多檢查條件,我認爲你會在90度左右:-) – mvp

+0

事實上,這是因爲在某個點上旋轉變爲負值,所以這又是另外4次檢查這就是我尋找解決方案的原因。 –