2015-05-12 24 views
1

我想在本地座標中向前移動一個剛體,我的意思是,如果我旋轉它,我希望它在本地X軸上移動。Unity3d本地轉發

我已經試過這一點,但它在全球座標移動:

Rigidbody player = GetComponent<Rigidbody>(); 

Vector3 movement = new Vector3 (1.0f, 0.0f, 0.0f); 
movement = movement.normalized * 2 * Time.deltaTime; 
player.MovePosition(transform.position + movement); 

我不知道如何進行更改爲本地座標。

+0

請閱讀標籤說明使用它們之前。 「團結」與Unity遊戲引擎無關。 –

+0

好吧,謝謝@MaxYankov – Luxy

回答

1

MovePosition在世界空間中工作的localPosition,所以你必須要做到這一點:

Rigidbody player = GetComponent<Rigidbody>(); // I really hope you're not doing this every frame, btw 
float speed = 2f; // magic numbers are bad, move them to variables, at least 
Vector3 movement = transform.forward * speed * Time.deltaTime; 
player.MovePosition(transform.position + movement); 
+0

我以前試過,但它以非常奇怪的方式移動......它在圓圈中移動,不僅前進,而且還有點繞着軸 – Luxy

+0

旋轉。 ..我發現它爲什麼會循環,我試圖移動的對象是一個球體,我希望它在移動時旋轉。其實完整的代碼是這條線 'transform.RotateAround(transform.position,rotateForward,speed * Time.deltaTime);' 如果我不旋轉球體 – Luxy

0

嘗試使用,而不是位置

Rigidbody player = GetComponent<Rigidbody>(); 

Vector3 movement = new Vector3 (1.0f, 0.0f, 0.0f); 
movement = movement.normalized * 2 * Time.deltaTime; 
player.MovePosition(transform.localPosition + movement); 
+0

nope,它在全球座標系中移動 – Luxy