46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
using System.Threading.Tasks;
|
|
using Cysharp.Threading.Tasks;
|
|
using UnityEngine;
|
|
|
|
namespace Animations
|
|
{
|
|
public class AsyncTween : MonoBehaviour
|
|
{
|
|
private async void Start()
|
|
{
|
|
await Animate();
|
|
|
|
// transform.position = await AnimateTask(transform.forward);
|
|
}
|
|
|
|
private async Task Animate()
|
|
{
|
|
float time = 0.0f;
|
|
|
|
while (time < 1.0f)
|
|
{
|
|
transform.position = Vector3.Lerp(Vector3.zero, transform.forward * 5.0f, time);
|
|
transform.localScale = Vector3.Lerp(Vector3.one, Vector3.one * 2.0f, time);
|
|
// await Task.Yield(); // wait for next frame
|
|
await UniTask.DelayFrame(1); // wait for next frame
|
|
time += Time.deltaTime;
|
|
}
|
|
}
|
|
|
|
private async Task<Vector3> AnimateTask(Vector3 forward)
|
|
{
|
|
float time = 0.0f;
|
|
|
|
Vector3 position = Vector3.zero;
|
|
|
|
while (time < 1.0f)
|
|
{
|
|
position = Vector3.Lerp(Vector3.zero, transform.forward * 5.0f, time);
|
|
await Task.Yield(); // wait for next frame
|
|
time += Time.deltaTime;
|
|
}
|
|
|
|
return position;
|
|
}
|
|
}
|
|
} |