如何使用C#unity将精灵转换为特定的持续时间

时间:2016-05-30 03:12:39

标签: c# unity3d unity5

一般来说,我知道如何将精灵转换为给定位置,但如何在一段时间内将精灵转换为给定位置?

1 个答案:

答案 0 :(得分:2)

这已被问及over一遍又一遍。只需在Google上搜索就可以得到答案。

可以使用LerpCoroutineTime.deltaTime来完成此操作。下面的示例将在1秒内将对象从位置A移动到B.您应该将当前对象的位置传递到第一个参数,并将新位置传递到第二个参数中。第三个参数是移动对象所需的时间(以秒为单位)。

public GameObject objectectA;
public GameObject objectectB;

void Start()
{
    StartCoroutine(moveToPos(objectectA.transform, objectectB.transform.position, 1.0f));
}


bool isMoving = false;

IEnumerator moveToPos(Transform fromPosition, Vector3 toPosition, float duration)
{
    //Make sure there is only one instance of this function running
    if (isMoving)
    {
        yield break; ///exit if this is still running
    }
    isMoving = true;

    float counter = 0;

    //Get the current position of the object to be moved
    Vector3 startPos = fromPosition.position;

    while (counter < duration)
    {
        counter += Time.deltaTime;
        fromPosition.position = Vector3.Lerp(startPos, toPosition, counter / duration);
        yield return null;
    }

    isMoving = false;
}