Пример #1
0
    public void moveTo(Vector3 ePos, Quaternion eRot)
    {
        bezierPts = new List <Vector3> ();
        bezierPts.Add(transform.localPosition);
        bezierPts.Add(ePos);
        bezierRots = new List <Quaternion> ();
        bezierRots.Add(transform.rotation);
        bezierRots.Add(eRot);

        if (timeStart == 0)
        {
            timeStart = Time.time;
        }
        timeDuration = MOVE_DURATION;
        state        = CBlState.to;
    }
Пример #2
0
 void Update()
 {
     switch (state)
     {
     case CBlState.toHand:
     case CBlState.to:
         float u  = (Time.time - timeStart) / timeDuration;
         float uC = Easing.Ease(u, MOVE_EASING);
         if (u < 0)
         {
             transform.localPosition = bezierPts [0];
             transform.rotation      = bezierRots [0];
             return;
         }
         if (u >= 1)
         {
             uC = 1;
             if (state == CBlState.toHand)
             {
                 state = CBlState.hand;
             }
             if (state == CBlState.to)
             {
                 state = CBlState.idle;
             }
             if (state == CBlState.toShow)
             {
                 state = CBlState.show;
             }
             transform.localPosition = bezierPts [bezierPts.Count - 1];
             transform.rotation      = bezierRots [bezierPts.Count - 1];
             timeStart = 0;
             if (reportFinishTo != null)
             {
                 reportFinishTo.SendMessage("CBCallback", this);
                 reportFinishTo = null;
             }
             else if (callbackPlayer != null)
             {
                 callbackPlayer.CBCallback(this);
                 callbackPlayer = null;
             }
             else
             {
                 //do nothing
             }
         }
         else
         {
             Vector3 pos = Utils.Bezier(uC, bezierPts);
             transform.localPosition = pos;
             Quaternion rotQ = Utils.Bezier(uC, bezierRots);                        //This doesn't work because Utils.Bezier is looking for a list of floats, not a list of Quaternions.
             transform.rotation = rotQ;
             if (u > 0.5f && spriteRenderers[0].sortingOrder != eventualSortOrder)
             {
                 setSortOrder(eventualSortOrder);
             }
             if (u > 0.75f && spriteRenderers[0].sortingLayerName != eventualSortLayer)
             {
                 setSortingLayerName(eventualSortLayer);
             }
         }
         break;
     }
 }