Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Правильная ли это строчка Timer += Time.deltaTime; или лучше время через Wait задавать?

Returno Мудрец (12167), на голосовании 1 месяц назад
public class ResizeObject : MonoBehaviour {

private Transform _transform;
private IEnumerator _resizeCoroutine;

private void Start () {
_transform = transform; // кешируем трансформ
Resize(2f, 5);
}

public void Resize (float time, float size) {
Resize(time, new Vector2(size, size, size));
}

public void Resize (float time, Vector3 size) {
// останавливаем ресайз если он происходит
if (_resizeCoroutine != null)
StopCoroutine(_resizeCoroutine);
// запускаем корутину ресайза
_resizeCoroutine = ResizeCoroutine(time, size);
StartCoroutine(_resizeCoroutine);
}

private IEnumerator ResizeCoroutine (float time, Vector3 target) {
float Timer = 0;
Vector3 Base = _transform.localScale;
while (Timer < time) {
_transform.localScale = Vector3.Lerp(Base, target, Timer/time);
yield return null; // задержка цикла до следующего кадра
Timer += Time.deltaTime;
}
_transform.localScale = target;
_resizeCoroutine = null;
}
}
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (445747) 2 месяца назад
Лучше тупо замерять время межну началом измерений и текущим временем. Любые манипуляции со временем упираются в тот веселый факт, что ты работаешь не в системе реального времени и накопление ошибок неизбежно.
Похожие вопросы