Example #1
0
        private void Update()
        {
#if !UNITY_EDITOR
            try
            {
#endif
            if (bezierTime < 0)
            {
                return;
            }

            bezierTime += Time.deltaTime;
            if (bezierTime <= bezierTotalTime)
            {
                objTransform.localPosition = bezier.BezierCurve(bezierTime / bezierTotalTime);
            }
            else
            {
                objTransform.localPosition = bezier.BezierCurve(1.0f);
                bezierTime = -1.0f;
            }

#if !UNITY_EDITOR
        }

        catch (Exception ex)
        {
            Logger.Error(ex.ToString());
        }
#endif
        }
Example #2
0
    void UpdateBezier()
    {
        Vector3 dis = m_Target - transform.position;

        //float delta = m_Speed * Time.deltaTime;
        if (dis.sqrMagnitude <= 0.25f)
        {
            MoveEnd();
        }
        else
        {
            Vector3 pos = Bezier.BezierCurve(m_P0, m_P1, m_P2, m_Elapsed / m_ArrivedTime);
            transform.position = pos;
            m_Elapsed         += Time.deltaTime;
        }
    }
Example #3
0
    public void Update()
    {
#if !UNITY_EDITOR
        try
        {
#endif
        if (Model == null)
        {
            return;
        }

        if (AnimationTime < 0)
        {
            DestroyModel();
            if (CallBack != null)
            {
                CallBack(Model);
                CallBack = null;
            }

            return;
        }

        WaitTime -= Time.deltaTime;
        if (WaitTime > 0)
        {
            return;
        }
        AnimationTime += Time.deltaTime;

        var delta = 1.0f;
        if (AnimationTime > TotalTime)
        {
            AnimationTime = -1;
            delta         = 1.0f;
        }
        else
        {
            delta = AnimationTime / TotalTime;
        }

        if (Targetpos2 != Vector3.zero)
        {
            Model.transform.position = Bezier.BezierCurve(Curpos, Targetpos1, Targetpos2, delta);
        }
        else
        {
            Model.transform.position = Bezier.BezierCurve(Curpos, Targetpos1, delta);
        }

        var Qua = Vector3.Lerp(CurQua, TargetQua1, delta);
        Model.transform.rotation = Quaternion.Euler(Qua);

        var Scale = Mathf.Lerp(CurScale, TargetScale, delta);
        Model.transform.localScale = new Vector3(Scale, Scale, Scale);

#if !UNITY_EDITOR
    }

    catch (Exception ex)
    {
        Logger.Error(ex.ToString());
    }
#endif
    }
Example #4
0
 void FindCurvePath()
 {
     FindControlPosition(lastRoad.GetRoadPosition(), currentRoad.GetRoadPosition());
     Bezier.BezierCurve(ref points, lastRoad.GetRoadPosition(), currentRoad.GetRoadPosition(), controlPoint);
     pointCount = points.Count;
 }
Example #5
0
    //Get a point on the curved edge, offset to the right of the car, to create two-lane-streets
    public Vector3 getEdgePointOffset(Edge edge, float t, Vector3 carRight)
    {
        Vector3 offset = Vector3.Scale(new Vector3(laneWidth, laneWidth, laneWidth), carRight);

        return(offset + Bezier.BezierCurve(getNodePosition(edge.n0), getNodePosition(edge.c0), getNodePosition(edge.c1), getNodePosition(edge.n1), t));
    }
Example #6
0
 //Get a point on the curved edge, which point is decided by the progress t (goes from 0.0 to 1.0)
 public Vector3 getEdgePoint(Edge edge, float t)
 {
     return(Bezier.BezierCurve(getNodePosition(edge.n0), getNodePosition(edge.c0), getNodePosition(edge.c1), getNodePosition(edge.n1), t));
 }