43 lines
1.2 KiB
C#
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);
|
|
}
|
|
}
|