2016-04-03 8 views
0

を翻訳使用して再び第一そして第二に第一位からオブジェクトを移動したいです。オブジェクトをある場所から別の場所に移動してから、再び自動的に1番目の場所に戻したいと思います。それを行う方法はありますか?オブジェクトを動かすためのコードはここにありますが、それは無限大を超えています!は、私はUnityへの非常に新しいです

float speedX = 1; float speedY = 0; float speedZ = 0; 

// Use this for initialization 
void Start() { 

} 

// Update is called once per frame 
void Update() { 
    transform.Translate (new Vector3 (speedX, speedY, speedZ) * Time.deltaTime); 
} 

答えて

0

オブジェクトを同じ方向に翻訳するために、停止することは制限されていないため、機能しません。これを行う1つの方法は、Lerpを使用してある点から別の点への位置値を補間することです。 http://docs.unity3d.com/ScriptReference/Vector3.Lerp.html

以下のコードは、gameObjectをp1からp2に移動してからp1に戻します。

public Transform p1, p2; 
public float speed = 1.0f; 
private float startTime; 
private float journeyLength; 
bool isMovingForward = true; 
float threshold = 0.001f; 

void Start() { 
    startTime = Time.time; 
    journeyLength = Vector3.Distance(p1.position, p2.position); 
} 

void Update() { 
    if (isMovingForward && Mathf.Abs((transform.position - p2.position).sqrMagnitude) < (threshold * threshold)){ 
     isMovingForward = false; 
     startTime = Time.time; 
    } 
    float distCovered = (Time.time - startTime) * speed; 
    float fracJourney = distCovered/journeyLength; 

    if (isMovingForward) 
     transform.position = Vector3.Lerp(p1.position, p2.position, fracJourney); 
    else 
     transform.position = Vector3.Lerp(p2.position, p1.position, fracJourney); 
} 
+0

はありがとう、私が探していたまさにthatsの。 – solo365

関連する問題