Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Tuts 1 By Shaman ^_____^
Предисловие:
Данный Урок Скорее не урок а небольшой сборник информации по использованию AnimTree в коде
так же я Искренне надеюсь на то что вы уже знаете азы AnimTree, если же нет
то идём и учим :)
и так сегодня я хочу показать использование так называемой "AnimNodeBlendPerBone"
это своего рода разветвление анимации
на примере я буду использовать своего тестового персонаж и его анимацию стояния на месте
начну я с того, что же всё таки эта AnimNodeBlendPerBone
это нода которая складывает 2 анимации воедино
как она это делает?
всё просто, как мы знаем любой Скелет строится на Иерархии костей
что значит, каждая кость происходит от другой кости, или же от корневой кости
корневая кость только одна поэтому скелет как бы то ни было похож на дерево
так вот, наша нода даёт анимацию выбранной кости а так же всей её ветки
которая идёт после неё
и так давайте уже от слов к делу
допустим у нас есть персонаж которому нужно разделить анимацию стояния на месте
на 2 разный
1)собственно сама анимация стояния на месте(Idle)
2)анимация стрельбы на месте из пистолета(Fire)
открываем наш AnimTree и добавляем новую ноду
проживает она по таким координатам
NewAnimationNode\Filter \AnimNodeBlendPerBone
видим такую картину
как вы могли уже догадаться создаём новую SequenceNode
обзываем её анимацией выстрела у меня это Fire1
далее подключаем все входы таким образом
нашу Idle анимацию к Source входу
Fire1 к target(кстати вход вы можете переименовать нажав на него правой кнопкой затем NameInput)
вход Out подключаем к нашей старой доброй AnimBlendByIdle
а саму ноду переименовываем в окне параметров в разделе NodeName
в итоге должна получится примерно такая картина
далее переходим в окно свойств нашей ноды
и смотрим на параметр Brunch StartBone
там тыкаем на +
и забиваем имя кости с которой должна проигрываться анимация выстрела
у меня это Bip001-Spine1
получается так что ноги нашего персонажа остаются на том же месте
а руки и корпус поворачиваются в стойку выстрела
на этом работа с самой AnimTree
закончена и теперь мы перейдём к программированию
но перед этим Обязательно поставим наш ползунок снова на 0
иначе стандартной стойкой будет уже заблендиная анимация..
и так весь урок я писал как раз ради объяснения как же всем этим управлять в коде
так Узрите же :D
проходим в на Pawn класс
и объявляем новую переменную
var AnimNodeBlendPerBone произвольное имя у меня(nameAnim);
далее мы можем поступить 2 способами(как минимум 2 :D)
можем создать функцию которая бы переходила в нужное положение ползунка
а можем поставить анимацию сразу на выстрел
не долго думая сделаем 2ое дабы избежать мне расспросов в личке :)
симулируем функцию выстрела
и запихаем в неё переключение ползунка на 1.00
после чего вернём её на место(функцию выстрела)
simulated function StartFire (byte FireModeNum)
{
// ShamAnimTest это то самое имя ноды которую мы указали в AnimTree
nameAnim = AnimNodeBlendPerBone(Mesh.FindAnimNode('ShamAnimTest'));
//1ое значение 1.0 определяет место ползунка в AnimTree
//2ое определяет скорость бленда анимации
nameAnim.SetBlendTarget(1.0,0.3);
//возвращаем функцию на место :)
Super.Startfire(FireModeNum);
}
всё окей кроме того что наша анимация начинает работу, но не заканчивает её
то есть теперь стойка стрельбы будет всегда когда наш персонаж стоит
так не должно быть
как можно догадаться мы сделаем всё тоже самое только в обратном направлении
на этот раз оперируем с функцией остановки огня
simulated function StopFire (byte FireModeNum)
{
nameAnim = AnimNodeBlendPerBone(Mesh.FindAnimNode('ShamAnimTest'));
nameAnim.SetBlendTarget(0.0,0.3);
Super. StopFire (FireModeNum);
}
вся эта система разумеется несовершенна, но она есть
и её можно ещё пожевать
на этом всё Всем Спасибо всем пока..
by Shaman