Unity3D - 以相同的速度(可变速度)使对象跟随另一个

时间:2016-05-23 18:18:22

标签: unity3d position velocity

我在同一个场景中有两个圆圈,我需要其中一个重复与其他地方相同的动作。只保持与另一个的大小的距离。

考虑圈子" A"并圈出" B",我存储圆坐标" A"在一系列的位置上,然后是圆圈" B"读取这些位置并执行。

使用这种方法,我在增加速度圈​​时遇到问题" A&#34 ;,因为圆圈" B"仍在读取数组之前存储的速度,使圆圈分开。

查看图片:

enter image description here

理想情况下,圆圈" B"以圆圈的当前速度运行" A"但是永远不可能从已经以圆圈速度记录的阵列中读取" A"那个时候。

    var dir = Input.mousePosition - Camera.main.WorldToScreenPoint(transform.position);
    var angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;

    transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.AngleAxis(angle, Vector3.forward), 180 * Time.deltaTime);
    transform.position += transform.right * Time.deltaTime * velocity;

    Camera.main.transform.position = new Vector3(transform.position.x, transform.position.y, Camera.main.transform.position.z);

    recordList.Insert(0, new Recorder
    {
      Position = transform.position,
      Rotation = transform.rotation,
      Velocity = velocity
    });

制作此方案的最佳方法是什么?

我提前感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我认为你需要的是使用来自" A"的位置数组。创建一个对象" B"可以解释为基于固定距离计算其位置,而不是在固定时间内。

因此" A"路径中的物体会创建一组航路点,如A1,A2,A3,A4 ....

B对象必须在持续航点之间添加距离,直到等于或大于等于"距离比固定距离A - 的距离小。乙