Unity3d 这台机器没有按预期工作

Unity3d 这台机器没有按预期工作,unity3d,Unity3d,好的,我得到了一系列的卡片,每次用户点击时,这些卡片都会一个接一个地移动到相机的中心 StageContainer是所有卡的父级。这是一个将移动,使它看起来像是卡移动代替 首先,我认为这是我的代码没有平滑阻尼 // Update is called once per frame void Update () { if(Input.GetMouseButtonDown(0)){ StartCoroutine ( ProcessFocus() ); frame

好的,我得到了一系列的卡片,每次用户点击时,这些卡片都会一个接一个地移动到相机的中心

StageContainer是所有卡的父级。这是一个将移动,使它看起来像是卡移动代替

首先,我认为这是我的代码没有平滑阻尼

// Update is called once per frame
void Update () {
    if(Input.GetMouseButtonDown(0)){
        StartCoroutine ( ProcessFocus() );
        frames++;
    }
}

IEnumerator ProcessFocus() {
    curPos = StageContainer.transform.localPosition;
    nextPos = curPos;
    nextPosX = nextPos.x - 400;
    nextPos.x = nextPosX;
    StageContainer.transform.localPosition = nextPos;
    yield break;
}
上面的代码让我可以即时更换相机中央的卡片。没有过渡,没有动画。。关键是它有效。 现在当我改变这一点:

StageContainer.transform.localPosition = nextPos;
为此:

float smoothTime = 0.3F;
Vector3 velocity = Vector3.zero;
StageContainer.transform.localPosition = Vector3.SmoothDamp(curPos, nextPos, ref velocity, smoothTime);
我假设它将从当前X点过渡到下一个X点, 但每次我点击鼠标,它只是一点一点地移动,就像10~20个X点


我不知道它为什么会这样。请帮助。

这是因为您的代码运行一次,然后退出协同程序。要在一定时间内运行协同程序,必须生成返回实例。在这种情况下,我怀疑您希望。

您的协同程序需要一直运行,直到移动完成

IEnumerator ProcessFocus() {

    curPos = StageContainer.transform.localPosition;
    nextPos = curPos;
    nextPosX = nextPos.x - 400;
    nextPos.x = nextPosX;

    float smoothTime = 0.3F;
    Vector3 velocity = Vector3.zero;

    while(this.transform.position != nextPos) {
       StageContainer.transform.localPosition = Vector3.SmoothDamp(curPos, nextPos, ref velocity, smoothTime);
       yield return null;
    }
}

请不要将unity标签用于与unity游戏引擎相关的问题。在将标签描述添加到问题之前阅读标签描述通常是一个好主意。你能发布更新的代码并详细说明哪些不起作用吗?