嘿夥計!
我附上了一張圖片來形象化我對我的問題的解釋。在我的比賽中,有一個綠色的球沿着無盡的道路滾動,被一個黃色的球追逐着。 爲了使道路看起來無盡,當球在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;
}
兩個球可以倒着走?你有沒有考慮添加道路而不是傳送? – Hristo