2016-03-28 46 views
0

我有兩個GameObject: Obj1在世界空間中的位置 - transform.position;。 世界空間中的Obj1方向 - transform.TransformDirection;。 可變距離 - float distance = 5f;如何計算Unity腳本中另一個對象之前的Vector3位置?

我需要將obj2放在Obj1之前的固定距離上。如何計算Obj2的Vector3位置?

+0

此刻你有什麼嘗試嗎?請分享您的當前代碼,以便我們更好地瞭解您是如何解決此問題的。瞭解您目前的方法將使我們更容易提供有用的解決方案。 – Serlite

回答

1

如果我明白你的意思,你只需要objB與objA處於固定距離,相對位置由objA的方向定義。

這很容易通過讓objB成爲objA的孩子來實現。如果是這種情況,它會移動,旋轉,甚至與objA一起縮放。如果距離和相對方向不變,只需在場景中直接設置即可。如果他們需要的是可配置的,你需要這樣的代碼:

public class KeepRelativePosition : MonoBehaviour 
{ 
    public float distance = 5f; 
    public Vector3 direction = Vector3.forward; 

    void Start() 
    { 
     SetRelativePosition(); 
    } 

    void SetRelativePosition() 
    { 
     transform.localPosition = direction.normalized * distance; 
    } 
} 

如果不改變預定義值,你的對象將是5個單位之前( - >在父母的局部空間正向)對象的父。但是,你的問題並沒有足夠的說清楚,以確定這就是你想要的。

相關問題