ARenaBlitz | Дата: Пятница, 19.03.2010, 18:10 | Сообщение # 1 |
ламер
Группа: Пользователи
Сообщений: 12
Статус: Offline
| Народ, кто-нибудь подскажите, что мне делать. Я загрузил в Blitz3D анимационную модель в формате 3ds. Запускаю анимацию, анимация проходит полностью (с первого кадра и до последнего). Можно ли сделать так, что анимация проходило к примеру с 10 кадра до 100 кадра, ну а затем повторялась снова с 10 кадра и шла 100 и так до бесконечности. Спасибо всем...
|
|
| |
ARenaBlitz | Дата: Суббота, 20.03.2010, 06:40 | Сообщение # 3 |
ламер
Группа: Пользователи
Сообщений: 12
Статус: Offline
| Так все, теперь я со всем разобрался. Чё да как делать. Ну в общем, если кому интересно, то пишу свой код целиком. Quote ("Анимации объекта") SeedRnd MilliSecs() ; включает анимацию в программе Graphics3D 800,600,32,2 cam=CreateCamera() PositionEntity cam,0,15,-25 pln=CreatePlane() tex=LoadTexture("Julia.jpg") EntityTexture pln,tex PositionEntity pln,0,0,0 ScaleTexture tex,30,30 Fable = LoadAnimMesh("Main_hero.3ds") ; загрузка анимационной модели в формате 3ds для объекта Fable LoadAnimSeq Fable, "Main_hero.3ds" ; загрузка 1-ой анимации для объекта Fable LoadAnimSeq Fable, "Main_hero1.3ds" ; загрузка 2-ой анимации для объекта Fable ScaleEntity Fable,0.1,0.1,0.1 ; уменьшение модели в 10 раз RotateEntity Fable,0,45,0 ; поворот модели на 45 градусов по оси Y Repeat If KeyDown(200) Then MoveEntity cam,0,0,1 If KeyDown(208) Then MoveEntity cam,0,0,-1 If KeyDown(203) Then TurnEntity cam,0,1,0 If KeyDown(205) Then TurnEntity cam,0,-1,0 If KeyDown(17) ; проверка нажания клавиши W, если нажата клавиша W, то идет следующее действие If AnimSeq (Fable)=0 Then Animate Fable,1,0.5,1,10 ; если идет анимация под номером 0, то есть анимации нет, то включить анимацию №1 Else ; иначе If AnimSeq (Fable) = 1 Then Animate Fable,0,0.5,0,10 ; если идет анимация №1, но клавиша W отпущена, то немедленное прекратить анимацию и вернуться к исходному месту End If ; конец цикла данной операции If KeyDown(31) ; проверка нажания клавиши S, если нажата клавиша S, то идет следующее действие If AnimSeq(Fable) = 0 Then Animate Fable,1,0.5,2,10 ; если идет анимация под номером 0, то есть анимации нет, то включить анимацию №2 Else ; иначе If AnimSeq (Fable) = 2 Then Animate Fable,0,1,0,10 ; если идет анимация №2, но клавиша S отпущена, то немедленное прекратить анимацию и вернуться к исходному месту End If ; конец цикла данной операции If KeyDown(1) Then Exit UpdateWorld RenderWorld Flip Forever Добавлено (20.03.2010, 06:40) --------------------------------------------- Если же нужно сделать так к примеру, что когда вы держите нажатой клавишу W ваш герой бежит, а затем, как только вы её отпустите нужно, чтобы он не только остановился, но и еще его немного качнуло вперед в этом случае нужно прописать код, который проверит, что была анимация бега, ну а после этого надо включить однократную анимацию остановки. Сделаем это на примере все того же кода, слегка изменив его: Quote ("Переход из одной анимации в другу при отпускании клавиши") SeedRnd MilliSecs() ; включает анимацию в программе Graphics3D 800,600,32,2 cam=CreateCamera() PositionEntity cam,0,15,-25 pln=CreatePlane() tex=LoadTexture("Julia.jpg") EntityTexture pln,tex PositionEntity pln,0,0,0 ScaleTexture tex,30,30 Fable = LoadAnimMesh("Main_hero.3ds") ; загрузка анимационной модели в формате 3ds для объекта Fable LoadAnimSeq Fable, "Main_hero.3ds" ; загрузка 1-ой анимации для объекта Fable LoadAnimSeq Fable, "Main_hero1.3ds" ; загрузка 2-ой анимации для объекта Fable ScaleEntity Fable,0.1,0.1,0.1 ; уменьшение модели в 10 раз RotateEntity Fable,0,45,0 ; поворот модели на 45 градусов по оси Y Repeat If KeyDown(200) Then MoveEntity cam,0,0,1 If KeyDown(208) Then MoveEntity cam,0,0,-1 If KeyDown(203) Then TurnEntity cam,0,1,0 If KeyDown(205) Then TurnEntity cam,0,-1,0 If KeyDown(17) ; проверка нажания клавиши W, если нажата клавиша W, то идет следующее действие If AnimSeq (Fable)=0 Then Animate Fable,1,0.5,1,10 ; если идет анимация под номером 0, то есть анимации нет, то включить анимацию №1 Else ; иначе If AnimSeq (Fable) = 1 Then Animate Fable,3,0.5,2,10 ; если идет анимация №1, но клавиша W отпущена, то перейти к анимации №2, которая прокрутится всего один раз End If ; конец цикла данной операции If KeyDown(1) Then Exit UpdateWorld RenderWorld Flip Forever
Сообщение отредактировал ARenaBlitz - Суббота, 20.03.2010, 06:40 |
|
| |