示例#1
0
 void ObjectsPositionTranslations()
 {
     for (int i = 0; i < positionTranslationObjects.Count; i++)
     {
         PositionTranslationObject o = positionTranslationObjects[i];
         if (o.transform && o.transform.gameObject && (o.target - o.transform.localPosition).magnitude > o.error && o.transform.localPosition == o.prevFramePos)
         {
             if (o.delay > 0)
             {
                 o.delay -= Time.deltaTime;
             }
             else
             {
                 if (o.maxSpeed == -1)
                 {
                     o.transform.localPosition = Vector3.SmoothDamp(o.transform.localPosition, o.target, ref o.currentVelocity, o.smoothTime);
                 }
                 else
                 {
                     o.transform.localPosition = Vector3.SmoothDamp(o.transform.localPosition, o.target, ref o.currentVelocity, o.smoothTime, o.maxSpeed);
                 }
                 o.prevFramePos = o.transform.localPosition;
             }
         }
         else
         {
             o.Func?.Invoke(o.transform.gameObject);
             o.isReached = true;
             positionTranslationObjects.Remove(o);
             i--;
         }
     }
 }
示例#2
0
 public void TranslatePositionObject(ref PositionTranslationObject o)
 {
     for (int i = 0; i < positionTranslationObjects.Count; i++)
     {
         Transform t = positionTranslationObjects[i].transform;
         if (o.transform == t)
         {
             positionTranslationObjects.RemoveAt(i);
             break;
         }
     }
     positionTranslationObjects.Add(o);
 }