Ejemplo n.º 1
0
    //return vector of curve at interpolation point 0 < t < 1
    public Vector3 GetLerpPoint(float t)
    {
        int i;

        if (ClosedLoop)
        {
            t = t % 1f;
        }

        if (t >= 1f)
        {
            t = 1f;
            i = controlPoints.Length - 4;
        }
        else
        {
            t  = Mathf.Clamp01(t) * CurveCount;
            i  = (int)t;
            t -= i;
            i *= 3;
        }


        return(transform.TransformPoint(Bezier.CalculatePoint(
                                            controlPoints[i], controlPoints[i + 1], controlPoints[i + 2], controlPoints[i + 3], t)));
    }
Ejemplo n.º 2
0
    public void UpdateLight(float worldTime, float worldLimit)
    {
        float   t   = (worldTime / worldLimit);
        Vector3 pos = Bezier.CalculatePoint(t, pos0, pos1, pos2);

        gameObject.GetComponent <RectTransform>().anchoredPosition = pos;
        bool isAngleIncreasing = minDegree - maxDegree > minDegree ? false : true;//TODO: find a way to change rotation

        directionalLight.GetComponent <RectTransform>().rotation = Quaternion.Euler(minDegree + t * (maxDegree - minDegree), 0, 0);
    }
Ejemplo n.º 3
0
 void FixedUpdate()
 {
     if (!finished && target != null)
     {
         fixedTimer += Time.deltaTime;
         float   t   = Mathf.Clamp(fixedTimer / duration, 0, 1);
         Vector3 pos = Bezier.CalculatePoint(start, midPoint, midPoint, target.transform.position, t);
         transform.position = pos;
         Vector3 next = Bezier.CalculatePoint(start, midPoint, midPoint, target.transform.position, t + 0.01f);
         transform.LookAt(next);
     }
 }
Ejemplo n.º 4
0
    void Start()
    {
        directionalLight = gameObject.GetComponentInChildren <Light>();

        if (directionalLight != null && directionalLight.type == UnityEngine.LightType.Directional)
        {
        }
        else
        {
            directionalLight = null;
        }

        Vector3 pos = Bezier.CalculatePoint(0, pos0, pos1, pos2);

        gameObject.GetComponent <RectTransform>().anchoredPosition = pos;
    }
Ejemplo n.º 5
0
    private void UpdateLine()
    {
        Vector3 midPoint = Vector3.Lerp(dragStart, Position, 0.5f);

        midPoint.y += midPointHeight;
        int segments = 10;

        line.SetVertexCount(segments + 1);
        Vector3 p   = dragStart;
        Vector3 dir = Vector3.zero;

        for (int i = 0; i <= segments; i++)
        {
            float   t    = (float)i / (float)segments;
            Vector3 newP = Bezier.CalculatePoint(dragStart, midPoint, midPoint, Position, t);
            dir = newP - p;
            p   = newP;
            line.SetPosition(i, p);
        }
        transform.LookAt(p + dir);
        transform.position = Position;
    }
 public Vector3 GetPoint(float t)
 {
     return(transform.TransformPoint(Bezier.CalculatePoint(vectors, t)));
 }