вобщем дело в том что в блитце для начала анимации нужно вызывать функцию оджин раз , если делать через кейдовн то функция постоянно вызывается и не может проиграться.
для того чтоб сделать при нажатии хотьбу а при ненажатии другую анимацию нужно использовать переменные
я использовал эти
Global player_start=0 - игрок начал идти
Global player_stop=1 - игрок остновился
Global player_still=1 - игрок стоит
вот код
Graphics3D 800,600,16,2
SetBuffer BackBuffer()
cam=CreateCamera()
lite = CreateLight(1)
MoveEntity lite,5,0,0
;--------------------------------------
m=LoadAnimMesh("officer.b3d")
men=ExtractAnimSeq(m,212,232)
men2=ExtractAnimSeq(m,236,260)
men3=ExtractAnimSeq(m,301,319)
ScaleEntity m,0.1,0.1,0.1
PositionEntity m,0,0,0,True
PointEntity cam,m
PositionEntity cam,0,3,-7
Animate m,1,0.5,men
Global player_start=0 ; сигнал для старта ходьбы
Global player_stop=1 ; сигнала для остановки ходьбы
Global player_still=1 ;игрок стоит
Repeat
If KeyHit(1) End
UpdateWorld
player_start=0;Обнуление сигнала для старта ходьбы
If KeyHit(200) player_start=1:player_stop=-0
If KeyDown(200)
player_still=0
Else
If player_still=0 player_stop=1
EndIf
If player_start Animate m,1,0.5,men2,6 ;цифра 6 на конце это transition - плавный переход от одной анимации в другую
If player_stop Animate m,1,0.5,men,10 :player_still=1:player_stop=0
RenderWorld tween
Flip
Forever
может показаться что можно обойтись всего двумя переменными start и stop , например так:
player_start=0;Обнуление сигнала для старта ходьбы
If KeyHit(200) player_start=1:player_stop=-0
If KeyDown(200)
Else
player_stop=1
EndIf
If player_start Animate m,1,0.5,men2,6
If player_stop Animate m,1,0.5,men,10:player_stop=0
но в таком случае player_stop будет равняться 1 постоянно , если не нажата клавиша вперед а нам нужно чтоб она всплавала единожды, т.е. один кадр, а потом снова становилась 0 .для этого я использую переменную контейер так сказать player_still в которую при первом проигрыше записываем 1 и следовательно если не нажата кнопка вперед проверяем стоит ли игрок If player_still=0 player_stop=1