2014-01-28 80 views
1

我正在使用Unity來開發我的遊戲。我已經通過計算startPosition和觸摸的結束位置做出了自定義的滑動手勢。我通過減去兩個位置得到矢量方向,併成功調試它。如何在Unity中向特定方向上的對象施加力

但是當涉及到對我的遊戲對象施加壓力時,我嘗試了很多後沒有獲得任何成功。

這裏是我在做什麼:

swipeDirection = new Vector3(endPos.x - startPos.x,0f, endPos.z - startPos.z); 

swipeDirection.Normalize(); 

Debug.Log("The direction is "+ swipeDirection); 

ball.rigidbody.AddForce(swipeDirection * 5); 

其中球僅僅是一個遊戲對象。每當我在我的iPhone上運行它時,遊戲就會卡住,在第一次滑動後給出一個EXC_BAD_ACCESS代碼。

我知道我在這裏錯過了一些愚蠢的東西。但我真的被卡住了。所以請幫助我。

謝謝。

+1

'EXC_BAD_ACCESS'通常是未捕獲的NullReferenceException。 'ball'或'ball.rigidbody'爲空嗎?例如,如果您沒有擡頭看「球」,或者球沒有連接剛體組件。 – rutter

+0

在編輯器上運行時,您可能會遇到錯誤。 – Roberto

+0

我是否必須始終以固定更新方法應用強制? –

回答

0

所以我只是測試你的代碼。它的工作原理。你可能會遇到的問題是,這些數字很可能很小,而且你需要很大的力量來顯着移動它。嘗試將你的5改爲1000或者更大,這樣你肯定能看到變化。這是我的代碼,剛剛添加到一個剛體球。

void Start() 
    { 
      Vector3 dir = new Vector3 (100f, 0f, 0f); 
      dir.Normalize(); 
      this.gameObject.rigidbody.AddForce (dir * 100); 
    } 

幾乎相同。你只需要使乘法器足夠大就可以看到。 祝你好運。