Можно ли как-то установить проигрываемую анимацию начать проигрываться не с самого начала, а с какого-то момента?
Например анимация "slam" Blademaster'a длится 1.133 сек. Мне нужно, чтобы анимация начала проигрываться не с 0.0 сек., а с 0.75 сек, например.

Короткий ответ, нет. Такой функции не предусмотрено.
В своих роликах я решил это так. Начинаю проигрывать анимацию по индексу на максимальной скорости. С помощью таймера через отрезок времени продолжаю проигрывать анимацию уже на нормальной скорости. Зная анимацию можно посчитать сколько времени нужно указать таймеру чтобы анимация достигла нужного места. Таким образом игроку будет казаться что анимация проигрывается с какого-то места.
Другой способ это изменить модель. Создать новую анимацию и скопировать или переиспользовать кадры.
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
AddUnitAnimationProperties(u,null,true)
SetUnitAnimationByIndex(u,8)
1 это прописываешь там де обьявляешь переменные после обьявления юнита
2 это прописываешь когда те анимация нужна поэкспериментируй от 0 до 30

а чтобы поднять это дело в воздух
UnitAddAbility(u, 'Arav')
UnitRemoveAbility(u,'Arav')
SetUnitFlyHeight(u,150,0)
ответ
gabriel_fisher, скорее всего, тебе нужны анимационные теги
теги бывают разные: alternate, gold, lumber, defend, flesh и др
например, у рабочего есть анимации attack, walk, death и если ему добавить тег lumber, тогда вместо этих анимаций будут проигрываться attack lumber, walk lumber и death lumber соответственно.
Теги можно добавлять/убирать тригерно
Анимация - Add/Remove Animation Tag
или с помощью jass
native AddUnitAnimationProperties takes unit whichUnit, string animProperties, boolean add returns nothing
Также теги можно добавлять в Редакторе Объектов
Графика - Нужная анимация
ответ
Suite, вот только придётся каждый раз вручную юзать этот спелл
SсRealm, ты вопрос прочти прежде чем писать всякий бред
нормальным способом момент добычи отловить нельзя
недавно кидали костыль позволяющий отловить удар по дереву но он тут не особо поможет
ибо анимации будут перебивать друг друга
в общем как и сказал Suite меняй это в самой модели
ответ
Переименуй анимацию в модели в например Stand Alternate и 1) и добавляй соответствующий тег или 2) проигрывай анимацию по индексу.
ответ
странно, но в любом случае, я снова дал не ту, эта именно обновляет скин - мороз, оживление, вот это всё пересчитывает. Вот функция смены модели:

function ChangeUnitModelTo takes unit u, string modelpath returns nothing
	local integer a
	local integer s
	set LastConvertedHandle=ConvertHandle(u)
	if LastConvertedHandle>0 then
		set a=RMem(LastConvertedHandle)+0x88
		if a>0 then
			set a=RMem(a)
			if a>0 then
				set s=GetStringAddress(modelpath)
				call CallThisCallWith3Args(a,LastConvertedHandle,s,1)
			endif
		endif
	endif
endfunction

22
Короткий ответ, нет. Такой функции не предусмотрено.
В своих роликах я решил это так. Начинаю проигрывать анимацию по индексу на максимальной скорости. С помощью таймера через отрезок времени продолжаю проигрывать анимацию уже на нормальной скорости. Зная анимацию можно посчитать сколько времени нужно указать таймеру чтобы анимация достигла нужного места. Таким образом игроку будет казаться что анимация проигрывается с какого-то места.
Другой способ это изменить модель. Создать новую анимацию и скопировать или переиспользовать кадры.
Принятый ответ
21
Zahanc, функцию ускорения анимации не подскажите? И на сколько можно ускорить анимацию?
22
ScopteRectuS:
Zahanc, функцию ускорения анимации не подскажите? И на сколько можно ускорить анимацию?
native SetUnitTimeScale takes unit whichUnit, real timeScale returns nothing
Не помню насколько я ускорял. Думаю ускорить в тысячу раз будет достаточно.
21
Zahanc, а можно ускорить настолько, что будет проигрывать нужную анимацию через фрейм? То есть через таймер:
	call TimerStart( timer, 0.0, false, function code )
22
Не пробовал. Warcraft очень неточен с real. Обычно попытки добиться точности неудачны. Возможно в этом случае это наоборот поможет. Не знаю.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.