2017-05-28 64 views
0

imageUnity3D矢量3傳送

嘿夥計!

我附上了一張圖片來形象化我對我的問題的解釋。在我的比賽中,有一個綠色的球沿着無盡的道路滾動,被一個黃色的球追逐着。 爲了使道路看起來無盡,當球在X軸(頂部圖像上的紫色線)上穿過一定距離時,球被傳回(底部圖像上的紫色線)。我這樣做:

if (gameObject.transform.position.x <= -20) { 
    gameObject.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z); 
} 

它工作得很好。

當綠球被「傳送」時,黃球應該以相同的值傳送回去,所以傳球之後球的距離不會改變。所以我做了一個公開的遊戲對象的「敵人」,放置在黃球敵人領域內的檢查和改變的代碼如下:

if (gameObject.transform.position.x <= -20) { 
    gameObject.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z); 
    enemy.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z); 
} 

但你可以在底部圖像上看到,黃球WASN不會以相同的距離傳送。似乎距離是從原始起點加入的,而不是從傳送前的點開始。希望你們知道這個解決方案。

黃球有腳本跟隨球員,也許它必須做這件事?

void Update() 
{ 

    //enemy follows the ball with speed 8 
    transform.LookAt (target); 
    transform.Translate (Vector3.forward * 8 * Time.deltaTime); 

    //fix y-position 
    Vector3 tmp = transform.position; 
    tmp.y = lockedY; 
    transform.position = tmp; 

} 
+0

兩個球可以倒着走?你有沒有考慮添加道路而不是傳送? – Hristo

回答

0

你想敵人向後移動80個單位,那麼你需要的敵人向後移動80個單位。

enemy.transform.position = new Vector3(敵人.position.x + 80,敵人.position.y,敵人.position.z);

+0

謝謝,你救了我! :d –