Как исправить «нежелательное дрожание камеры во время следования кривой Безье в единстве»? - PullRequest
0 голосов
/ 03 апреля 2019

Я создаю простой сценарий перемещения камеры, который следует кривой Безье (сборка с помощью средства визуализации линий). Но после воспроизведения, когда-нибудь камера начинает дрожать.

Уже добавленный компонент твердого тела с интерполяцией

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class QBCurveFollower : MonoBehaviour {

    public int totalPathsInCurrentWaypoints;
    public int nextTpicw;

    public LineRenderer ln;
    public LineRenderer nextLn;

    public int i = 0;
    public float step = 1f;
    public float speedMultiplier = 1f;

    public Transform finalPoint;
    public Transform nextFinalPoint;
    // Use this for initialization

    void Start () {
    }

    void FixedUpdate(){
        if ((i + 1) != totalPathsInCurrentWaypoints) {

            Vector3 target = ln.GetPosition (i);

            //for mission//
            if (roverCore.start) { 
                Missions.distance = Vector3.Distance(this.transform.position, ln.GetPosition(i));
                Missions.updateDistance = true;
            }

            if (roverCore.start) {
                GameController.distance += Vector3.Distance(this.transform.position, ln.GetPosition(i));
            }
            ///////////////

            for (int c = 0; c < speedMultiplier; c++) {
                transform.position = Vector3.MoveTowards (this.transform.position, target, step );
                if (target != null)
                {
                    transform.LookAt(target);

                }

                if (transform.position == target && i < 299)
                {
                    i++;
                    target = ln.GetPosition(i);

                    if (target != null)
                    {
                        transform.LookAt(target);

                    }
                }
            }
        }

        if ((i + 1) == totalPathsInCurrentWaypoints && nextLn != null)
        {
            if (i == 299)
            {
                ln = nextLn;
                totalPathsInCurrentWaypoints = nextTpicw;
                finalPoint = nextFinalPoint;
                nextFinalPoint = null;
                nextLn = null;
                nextTpicw = 0;
                i = 1;
                TileManager.corsRemove = true;
            }
        }
    }
}

Я ожидал, что моя камера будет следовать кривой Безье до конца и начнет следовать за следующей из ее начальной точки.

...