2013-01-17 50 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次检查这就是我寻找解决方案的原因。 –