2013-09-26 46 views
0

我目前能夠移動兩個對象(兩個圍欄杆)並在中間拉伸一個對象,作爲圍欄中的一根線。 看看在這裏解決的問題了解更多信息:instantiate plane with texture between two objects(vectors)實例化兩個其他對象之間的對象

我將不勝感激一些關於如何實例化兩極之間以及具有已經工作的電線的輸入。例如,每當兩個物體之間的距離隨着例如上升而增加時, 1. 我計算這樣的距離: Vector3.Distance(currentPole1.position,currentPole2.position));

並猜測for循環可以做檢查,但似乎無法弄清楚這一個。 日Thnx, 庫洛

回答

0

給定兩個的Vector3座標,p1p2,我們可以計算出它們之間的間隔均勻X點:

Vector3 p1 = <some vector> 
Vector3 p2 = <some vector> 
int numPoints = 9; 

float step = 1f/(numPoints+1); 
for (float perc = step; perc < 1f; perc += step) { 
    Vector3 v = Vector3.Lerp(p1, p2, perc); 
    //do something at position v 
} 

或者,我們可以計算出幾個點,每個點在相隔最多的X單元間隔:

Vector3 p1 = <some vector> 
Vector3 p2 = <some vector> 
float maxSpacing = 10f; 

Vector3 diff = p2 - p1; 
Vector3 dir = diff.normalized; 
float totalDistance = diff.magnitude; 
for (float dist = maxDistance; dist < totalDistance; dist += maxSpacing) { 
    Vector3 v = p1 + dir * dist; 
    //do something at position v 
} 

(只注意到我的示例代碼是在C#中,在您剛纔的問題是使用JS;?想必你可以計算出的差異)

+0

Hey Rutter, Thnx爲您的答案。 我試圖重寫第一個塊,並使用兩個極點作爲p1&p2 var p1:Vector3 = currentPole1.TransformDirection(Vector3.right); \t var p2:Vector3 = currentPole2.TransformDirection(Vector3.left); \t var numPoints:int = 9; \t var step:float = 1f /(numPoints + 1); (var perc:float = step; perc <1f; perc + = step){ \t var \t var v:Vector3 = Vector3.Lerp(p1,p2,perc); \t \t //在位置v處做某事 \t實例化(fencePoleSkew,v,Quaternion.identity); 這實例化對象,但不在兩極之間。 – krodil