Files
ft/Client/Assets/Scripts/UI/SocialRush/SocialRushFlyingItemView.cs
2026-06-29 21:18:33 +08:00

43 lines
1.2 KiB
C#

using GameCore;
using UnityEngine;
using System.Threading.Tasks;
using DG.Tweening;
public class SocialRushFlyingItemView : MonoBehaviour
{
[SerializeField] private RewardItemNew rewardItem;
public async void Fly(Vector2 startPos, Vector2 endPos, Vector2 pivot, float duration, float targetScale, ItemData item)
{
try
{
await FlyAsync(startPos, endPos, pivot, duration, targetScale, item);
}
catch (System.Exception e)
{
Debug.LogError(e);
}
}
public async Task FlyAsync(Vector2 startPos, Vector2 endPos, Vector2 pivot, float duration, float targetScale, ItemData item)
{
rewardItem.SetData(item);
float t = 0;
transform.position = startPos;
DOTween.To(() => t, v => t = v, 1, duration)
.OnUpdate(() => UpdatePosition(startPos, endPos, pivot, t));
await transform.DOScale(targetScale, duration).AsyncWaitForCompletion();
Destroy(gameObject);
}
private void UpdatePosition(Vector2 startPos, Vector2 endPos, Vector2 pivot, float t)
{
transform.position = FtUtils.CalculateBezierCurve(t, startPos, pivot, endPos);
}
private void OnDestroy()
{
DOTween.Kill(this);
}
}