Good evening!
I use this to lerp an UI object, a child of Canvas, to an anchored target position on the same canvas:
- Works smoothly and the lerpDuration is correct.
private IEnumerator MoveRectTransformToTarget(RectTransform rectTransformToMove, Vector2 posTarget, float lerpDuration)
{
Vector2 a, b;
a = rectTransformToMove.anchoredPosition;
b = posTarget;
float timeElapsed = 0;
while (timeElapsed < lerpDuration)
{
timeElapsed += Time.deltaTime;
rectTransformToMove.anchoredPosition = Vector2.Lerp(a, b, timeElapsed / lerpDuration);
if (Vector2.Distance(rectTransformToMove.anchoredPosition, posTarget) < 1.0f)
{
rectTransformToMove.anchoredPosition = posTarget;
yield break;
}
yield return null;
}
}
- Works but glitches, moves faster than expected and when build to mobile device, even laggy movement.
private IEnumerator MoveRectTransformToTarget(RectTransform rectTransformToMove, Vector2 posTarget, float lerpDuration)
{
Vector2 b;
b = posTarget;
float timeElapsed = 0;
while (timeElapsed < lerpDuration)
{
timeElapsed += Time.deltaTime;
rectTransformToMove.anchoredPosition = Vector2.Lerp(rectTransformToMove.anchoredPosition, b, timeElapsed / lerpDuration);
if (Vector2.Distance(rectTransformToMove.anchoredPosition, posTarget) < 1.0f)
{
rectTransformToMove.anchoredPosition = posTarget;
yield break;
}
yield return null;
}
}