2016-05-09 87 views
0
void Update() 
{ 
    if (transform.Translate((Input.acceleration.x), 0, 0)) 
    { 
     GetComponent<Rigidbody>().AddForce(Vector2.right); 
    } 
} 

我正在使用Android應用程序的加速器,但似乎並不喜歡它。我可以改變它爲KeyDown工作,但它不會與加速器一起工作。Unity3d「不能隱式地將類型`void'轉換爲`bool'」

錯誤:

"Cannot implicitly convert type "void" to "bool"

+6

'transform.Translate'方法實際上是否返回'bool'值? –

+0

方法簽名是'void Update()'。因此它並不意味着要返回任何東西。如果你想返回一個布爾值,把它改爲'bool Update()'。 –

+1

@ BarryO'Kane'Update'方法中沒有'return'。正如Dovydas指出的那樣,'Translate'更可能是'void'。 – juharr

回答

2

根據文檔http://docs.unity3d.com/ScriptReference/Transform.Translate.html

transform.Translate不返回一個布爾值;它的返回類型是無效的。因此,您不能使用if語句來評估它是否成功。

如果你想檢查翻譯是否正確發生,你需要檢查調用transform.Translate的副作用。換句話說,看看轉換中發生了什麼變化,看看它是否符合您的期望。

0

不要使用if語句的,因爲翻譯的回報什麼。剛剛離開的AddForce線

相關問題