2016-04-03 68 views
0

我對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

這不起作用,因爲你只是在相同的方向上翻譯對象,沒有任何限制停止。一種做法是使用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

謝謝,那就是我正在尋找的。 – solo365

相關問題