У меня есть простая настольная игра, в которой токены перемещаются с квадрата на квадрат. Я использую сопрограмму для перемещения токенов. Это делает что-то вроде ниже
IEnumerator MoveTokenCoRoutine(int steps)
{
while (steps > 0)
{
transform.position = Vector3.Lerp(transform.position, newPos, Time.deltaTime * speed);
yield return null;
--steps;
}
}
Клип представляет собой скользящий звук в течение 2 секунд.
Шаги, на сколько квадратов токен должен двигаться, используя Lerp. Единственный раз, когда я смог синхронизировать это с параметрами ниже.
1) Установите скорость lerp на 10, которая является скоростью по умолчанию, которую я использую для перемещения
2) Шаг = 1 (переместить на одну клетку)
3) Вызовите Play () как раз перед тем, как
С этим сценарием движение и звуковой эффект в значительной степени синхронизированы.
Однако, если количество шагов больше 1, и я помещаю Play () в цикл, он просто проигрывается один раз и останавливается. Но жетон продолжает двигаться, пока не закончится.
Какие у меня есть подходы для синхронизации?