0

我正在用某个偏移量的多个子对象实例化一个 Gameobject。这个 Co-Routine 每个孩子调用一次。我想随机化孩子的 Y 位置并将它们拉回到正确的 endPosition。但是,由于某种原因,我的 endPosition 受到了这种变化的影响。无论起始位置的随机 Yoffset 是什么,零件最终都会组装。

我只是随机化 startPos.y; 为什么我的 endPos 会受到影响?

很多人都被这个问题难住了,所以任何帮助都会很棒。

IEnumerator TransitionAnim(Transform part, bool start)
    {
        float t = 0;

        if (start)
            {
        Vector3 startPos = new Vector3(part.position.x, Random.Range(30,-30), part.position.z);
        Vector3 endPos = new Vector3(part.position.x - startingOffset, part.position.y, part.position.z);

        while (t < duration)
            {
           t += Time.deltaTime;
           part.position = Vector3.Lerp(startPos, endPos, Mathf.SmoothStep(0,1F,t/duration));       
           yield return 0;   
            }
           part.position = endPos;
    }
}
4

1 回答 1

1

我用你上面的代码列表写了一个小测试,endPos没有改变,所以问题可能出在其他函数上。以下是我的猜测:

  1. 你的 endPos 的生成取决于 part(transform) 的位置
  2. 经过一些计算,您为零件(变换)的位置分配了一个值,零件的位置发生了变化
  3. 另一个游戏对象尝试使用相同的变换部件来生成自己的endPos,但是部件的位置已经改变,所以这个游戏对象会得到不同的endPos

如果我的猜测是正确的,那么有解决方案:

  1. 不要为零件位置分配新值
  2. 尝试根据零件的位置使用新的vector3
于 2013-04-27T03:22:14.707 回答