2015-08-14 60 views
0

目前我有8個對象,每個對象都有自己的更新腳本。我想要做的是,每個對象都顯示它位於bools的正確位置。如果它離開正確的位置,bool返回到false多個更新腳本,不適用於多個對象

對於前兩個對象,該腳本效果很好。 第一個腳本是

p1, with x = -2.5, and y = -2.5.

第二個對象是

p2, with x = 0, and y = -2.5.

當他們離開這些位置,該bool變化false沒有任何問題。

然後當我到達第三目標,

p3, with x=-2.5 and y=0

但它顯示了true-2.5 x-2.5 y,當它應該是false。任何幫助將不勝感激。

void Update(){ 
    if(transform.position.x <= -2.5 && transform.position.y <= -2.5) { 
    p1 = true; 
    } else { 
     p1 = false; 
     } 
} 
+1

我,呃,想看到P2和P3代碼的詳細信息。 – Kilazur

+0

它們與上面提到的完全相同,除了位置更改(和布爾)。對於p2,p3等等。 p2是 - transform.position.x <= 0 && transform.position.y <= -2.5。 P2工作。另一方面,P3是 - transform.position.x <= -2.5 && transform.position.y <= 0。P3不起作用,它在正確的位置顯示爲真,但當向下移動時,顯示爲-2.5x仍然是真實的。 –

+0

那麼,-2.5 <= -2.5是正確的。儘量嚴格使用劣質''' – Kilazur

回答

1

看看你寫的條件:你正在測試< = -2.5。根據定義-2.5小於或等於-2.5(在這種情況下相等),因此它將屬於真實情況。如果你想-2.5是假的,將它改爲<(小於)而不是< =(小於或等於)。

更新:

從您發表評論我懷疑你的測試上P3關於x = < -2.5和y < = 0 若y從0變爲-2.5你第二個條件是依然正確的,因爲-2.5 < = 0.如果你想測試一個正確的點,你必須測試!=(不等於)該數字,但是這可能會導致其他問題,這取決於你使用的數據類型。例如。對於雙重你可能不得不測試Math.Abs​​(-2.5 - y)< 2d * Double.Epsilon

對於在那個特定的樣子e.g. hereand here.

+0

它不會那樣工作。如果我在p3上更改爲這樣,則無論其位於何處,它都會顯示爲false。它需要在-2.5x和0y處具體顯示爲真。另外,如果我將其更改爲「=」以便精確,則會返回錯誤。謝謝你:) –

+0

==是平等=是分配。 –

+0

再次感謝您的快速響應。我嘗試了你發佈的方法,並閱讀你提供的鏈接(確實有幫助)。它仍然讓我回到原點。用這種方法,它在所有-2.5個位置都顯示爲真,除了應該是真的。這是清晨,也許我失去了一些東西......需要更多的咖啡嗯。 –