如何在两个游戏对象之间平滑地进行线性平移

时间:2018-03-20 19:24:38

标签: c# unity3d unityscript unity3d-2dtools

实际上我是团结的新人,试图顺利学习线性翻译。我使用两个立方体并尝试相互平滑地转换。

public class LinearTrasnformation : MonoBehaviour {

    public GameObject cube1, cube2;

    // Use this for initialization
    void Start () {
        //cube1.transform.position = new Vector3 (cube1.transform.position.x,cube1.transform.position.y,cube1.transform.position.z);
    }

    // Update is called once per frame
    void Update () { 
        if(Input.GetKey(KeyCode.UpArrow)){
            cube1.transform.position = Vector3.Lerp (cube2.transform.position,cube1.transform.position,0.5f*Time.deltaTime);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

Lerp的最后一个组成部分可以被认为是lerp完成的一部分(从0到1)。您还需要存储多维数据集1的原始位置,否则将使用多维数据集的新位置不断更新lerp。你应该做...

float t = 0;
Vector2 origpos;

void Start() {

}
void Update () {
    if(Input.GetKeyDown(KeyCode.UpArrow))
          origpos = cube1.transform.position; //store position on keydown      
    if(Input.GetKey(KeyCode.UpArrow)){
        t += Time.deltaTime;
        cube1.transform.position = Vector3.Lerp(origpos, cube2.transform.position, t/2f); // where 2f is the amount of time you want the transition to take
    }
    else if (Input.GetKeyUp(KeyCode.UpArrow) 
        t = 0; // reset timer on key up
}