2017-03-24 11 views
0

私はA点まで移動したいオブジェクトを取得し、A点に到達するとB点に移動します。B点に達すると点Aに戻ります。GameObjectを前後に移動

は、私はこの

void Update() 
{ 
    transform.position = Vector3.Lerp(pointA, pointB, speed * Time.deltaTime); 
} 

ためVector3.Lerpを使用すると考えていたしかし、どのように私はその後戻って移動することができますか?これを実現するエレガントな方法はありますか?明らかに私はこのように2つのLerpsが必要です:

void Update() 
{ 
    transform.position = Vector3.Lerp(pointA, pointB, speed * Time.deltaTime); // Move up 
    transform.position = Vector3.Lerp(pointB, pointA, speed * Time.deltaTime); // Move down 
} 

誰かが私を助けてくれますか?

答えて

4

これを実行する方法はたくさんありますが、これを達成する最も簡単で簡単な方法はMathf.PingPongです。 Mathf.PingPongを使用してとの間の数値を取得し、その値をVector3.Lerpに渡します。それでおしまい。

Mathf.PingPongは自動的にはと1との間で前後に移動するであろう値を返します。詳細はリンクされたドキュメントを参照してください。

public float speed = 1.19f; 
Vector3 pointA; 
Vector3 pointB; 

void Start() 
{ 
    pointA = new Vector3(0, 0, 0); 
    pointB = new Vector3(5, 0, 0); 
} 

void Update() 
{ 
    //PingPong between 0 and 1 
    float time = Mathf.PingPong(Time.time * speed, 1); 
    transform.position = Vector3.Lerp(pointA, pointB, time); 
} 
+1

うわー助け!どうもありがとう。 – Question3r

関連する問題