48 lines
1.4 KiB
C#
48 lines
1.4 KiB
C#
using System.Collections;
|
|
using System.Threading;
|
|
using UnityEngine;
|
|
|
|
namespace Animations
|
|
{
|
|
public class ThreadTween : MonoBehaviour
|
|
{
|
|
private void Start()
|
|
{
|
|
StartCoroutine(StartThread());
|
|
}
|
|
|
|
private IEnumerator StartThread()
|
|
{
|
|
yield return new WaitForSeconds(2.0f);
|
|
|
|
// CAUTION: you can't access Unity Objects, e.g. Transforms, from another thread
|
|
// than the main thread
|
|
|
|
// CAUTION: never put the main thread to sleep, e.g. Thread.Sleep() or Thread.Join()
|
|
|
|
Vector3 position = transform.position;
|
|
Vector3 forward = transform.forward;
|
|
Vector3 localScale = transform.localScale;
|
|
|
|
Thread thread = new Thread(() =>
|
|
{
|
|
float time = 0.0f;
|
|
|
|
while (time < 1.0f)
|
|
{
|
|
position = Vector3.Lerp(Vector3.zero, forward * 5.0f, time);
|
|
localScale = Vector3.Lerp(Vector3.one, Vector3.one * 2.0f, time);
|
|
Thread.Sleep(16);
|
|
// time += Time.deltaTime; // Time is not available in a thread
|
|
time += 0.016f;
|
|
}
|
|
});
|
|
thread.Start();
|
|
|
|
thread.Join();
|
|
|
|
transform.position = position;
|
|
transform.localScale = localScale;
|
|
}
|
|
}
|
|
} |