Ох, это гемор большой, смешивание это...
Хоть и не сампый православный, но пашущий вариант:
1) копируем модель персонажа, вешаем её на основную модель, скрываем нулевой альфой
2) загружаем анимацию бега и стояния на основную модель, а на скрытую только анимацию выстрела
3) создаём в коде Data секцию, в которую входят только те кости, которые находятся в верхней части туловища
4) вставляем вот такую функцию:
Function SyncPlayerBones(PlayerMesh, HiddenMesh)
Restore .BonesData ; метка DATA секции
Read BonesNum% ; Количество костей
For i=1 to BonesNum
Read Name$ ; Имя кости
bone1=FindChild(PlayerMesh,Name) : bone2=FindChild(HiddenMesh,Name)
RotateEntity bone1, EntityPitch(bone2,0), EntityYaw(bone2,0), EntityRoll(bone2,0)
Next
EndFunction
5) вставляем вот такой код между UpdateWorld и RenderWorld
If Animating(HiddenMesh) SyncPlayerBones(PlayerMesh, HiddenMesh) ; HiddenMesh - скрытый, PlayerMesh - основной меши игрока
6) наслаждаемся. Для того, чтобы заставить игрока стрельнуть, анимируем скрытый меш =)
Вот пример DATA - секции:
.BonesData
Data 4
Data "Golova","Tulovishe","Lruka","Pruka"