Unity C#Vector 3不匹配

时间:2013-04-26 19:59:27

标签: c# unity3d

我正在实例化一个具有一定偏移量的子项的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;
    }
}

1 个答案:

答案 0 :(得分:1)

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

  1. 生成的endPos取决于部分(转换)的位置
  2. 经过一些计算,你为一个部分(变换)的位置分配了一个值,部分的位置被改变了
  3. 另一个游戏对象试图使用相同的变换部分来生成自己的endPos,但部分的位置已经改变,所以这个游戏对象会得到一个不同的endPos
  4. 如果我的猜测是正确的,那就有解决方案:

    1. 不为部分位置指定新值
    2. 尝试使用基于部件位置的新vector3