Я сделал себе такой метод:
Используется csharp
static public IEnumerator FinishAnim(Animation anim, Action<string> act, string name)
{
AnimationState desireAnim = null;
foreach (AnimationState ast in anim)
{
if (ast.name != name || !anim.IsPlaying(ast.name)) continue;
desireAnim = ast;
break;
}
if(desireAnim == null)
yield break;
//время, на которое нужно вызывать WaitForSecond (анимация на момент вызова может уже идти какое-то время!)
var waitTime = desireAnim.length - desireAnim.time + Mathf.FloorToInt(desireAnim.time / desireAnim.length) * desireAnim.length;
yield return new WaitForSeconds(waitTime);
act("finishanim" + desireAnim.name);
}
Ищет анимацию с переданным именем. Если такой нет, или она в данный момент не проигрывается - просто возвращается. Иначе вызывает указанную акцию (Action) и передает ей имя анимации. Action, естественно, должна быть определена в Вашем скрипте.
Последний раз редактировалось
seaman 23 июн 2011, 22:38, всего редактировалось 1 раз.