forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   Смена анимации с помощью KeyDown (http://forum.boolean.name/showthread.php?t=17786)

Niburiec 24.01.2013 14:06

Смена анимации с помощью KeyDown
 
Прочитал все сообщения на форуме по поводу загрузки анимации, но для себя ничего не нашел...А потому хочу поинтересоваться у профи, как менять анимацию с помощью KeyDown? Я пробовал разные варианты загрузок: и X, и B3D, и MD2. Но так толком ничего и не понял. С помощью KeyHit смена анимации проходит легко и без проблем, не взирая на то есть там ключи или нет. Но стоит поменять на KeyDown и сменнённая анимация замирает на первом кадре, пока не отпустишь клавишу. Так вот я хотел спросить, кто может мне без отговорок и сссылок на туториал, объяснить на пальцах как сделать простой цикл проверки нажатия и смены анимации? Чтоб нажал вверх - пошел вперёд, отпустил клавишу - стоит, нажал пробел-подпрыгнул, а если две клавиши (вперёд и Shift)- бежит... Вот такой вопрос.

CRASHER 24.01.2013 14:14

Ответ: Смена анимации с помощью KayDown
 
А что тут не понятного? KeyHit реагирует один раз после нажатия. KeyDown много раз пока не отпустишь клавишу. При KeyDown текущий кадр переносится на 1 кадр пока эта клавиша нажата. Если хочешь приципить анимацию к движению объекта, просто сделай проверку внутри кейдауна на проигрывание анимации объектом если есть уже анимация не вкючать новую.

Niburiec 24.01.2013 14:25

Ответ: Смена анимации с помощью KayDown
 
Спасибо конечно, но мне это ни о чём не говорит. Если не трудно код пожалуйста напишите для наглядности.

CRASHER 24.01.2013 14:39

Ответ: Смена анимации с помощью KayDown
 
Если это вам ни о чем не говорит, значит рано браться за программирование игр. едиственное что могу подсказать : команда проверяющая анимированность объекта - Animate(Ent).

Niburiec 24.01.2013 14:46

Ответ: Смена анимации с помощью KayDown
 
Я боюсь что б не было поздно :) Ведь время не стоит на месте...Про Animate(Ent) я знаю, а вот как его правильно вставить в цикл ? Вот тут у меня соображения не хватает. Наверно я староват уже для понимания :) Ну ничего, если вы мне не можете объяснить попробую обратиться на другой форум... Может там мне не скажут что я недотёпа...

CRASHER 24.01.2013 14:51

Ответ: Смена анимации с помощью KeyDown
 
Тфу, подрукой блитза нет. Не Animate() а Animating() кажется.
Рановато, и недотепа, разные вещи.
Цитата:

Если кейдаун (57)
_____Если анимейтинг(Энт)
_________ничего...(или что то)
_____иначе
_________анимейт(Энт)
_____конец если
конец если

Niburiec 24.01.2013 14:55

Ответ: Смена анимации с помощью KeyDown
 
)))) Да не страшно, ведь я то всё равно ничего не понимаю, ведь так ? Вот куда мне здесь что вставить:

Graphics3D 800,600,16,1
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

While Not KeyHit(1)
Animate m,1,0.5,1
If KeyDown(200) Animate m,1,0.5,men2

If KeyDown(205) Animate m,1,0.5,men3

UpdateWorld
RenderWorld
Flip
Wend
End

CRASHER 24.01.2013 15:04

Ответ: Смена анимации с помощью KeyDown
 
If KeyDown(200)
if not Animating(men2)
Animate m,1,0.5,men2
endif
endif

тоже самое с другой кнопкой. Тебе в предыдущей теме тоже хороший код привели.
http://forum.boolean.name/showthread.php?t=7338

Niburiec 24.01.2013 15:06

Ответ: Смена анимации с помощью KeyDown
 
Сейчас попробую...

Попробовал... В строке if not Animating(men2) выбивает ошибку: Entity does not exist

Хотя я не могу утверждать что вы не правы, не знаю, может дело в самой анимации?

Arton 24.01.2013 15:24

Ответ: Смена анимации с помощью KeyDown
 
"Entity does not exist" дык интити нету, проверь правильность пути к файлу, названия переменных, скорее всего в этом косяк, сам сколько раз мучился с подобным, а потом оказывалась впопыхах переменную не так назвал.

Niburiec 24.01.2013 15:33

Ответ: Смена анимации с помощью KeyDown
 
Может не надо использовать с B3D ExtractAnimSeq ? Ведь в начале он загружает модель, а потом при проверке ошибка...

Arton 24.01.2013 15:36

Ответ: Смена анимации с помощью KeyDown
 
Синь файлик модели я посмотрю.

И какой версии блица ты пользующийся?

Niburiec 24.01.2013 15:58

Ответ: Смена анимации с помощью KeyDown
 
Вложений: 1
Версия 1.98 А модель я позаимствовал из FPS Креатора (да простят меня они). В архиве X (оригинал), B3D я его просто конвертнул в Fragmotion и MD2, тут я пытался сделать по науке, не знаю вышло ли...

Ой.. забыл скинуть текстуру...ну да и так будет понятно...

Arton 24.01.2013 16:03

Ответ: Смена анимации с помощью KeyDown
 
Цитата:

Сообщение от Niburiec (Сообщение 250546)
Версия 1.98 А модель я позаимствовал из FPS Креатора (да простят меня они). В архиве X (оригинал), B3D я его просто конвертнул в Fragmotion и MD2, тут я пытался сделать по науке, не знаю вышло ли...

Вопервых X несодержит анимацию, но я вижу что ты разобрался.
Версия 1.99, у меня всё работает, ошибок нет. Блиц глючит, попробуй запустить в оконном режиме.

Niburiec 24.01.2013 16:18

Ответ: Смена анимации с помощью KeyDown
 
Цитата:

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,1
While Not KeyHit(1)
If KeyDown(200)
If Not Animating(men2)
Animate m,1,0.5,men2
EndIf
EndIf

Animate m,1,0.5,1
UpdateWorld
RenderWorld
Flip
Wend

End
Пробовал я и в оконном - да хоть ты тресни... И пути проверил - всё впорядке... не идёт зараза...

А так ходит, но мне нужно чтоб он шёл только при нажатой клавише...

Цитата:

Graphics3D 800,600,16,2
SetBuffer BackBuffer()

camera=CreateCamera()

light=CreateLight()
RotateEntity light,90,0,0

; Загрузка md2
m=LoadMD2( "officer_5.md2" )
;me1=LoadAnimSeq(
; Загрузка текстуры md2
m_tex=LoadTexture( "officer_1_D2.dds" )

; Наложить текстуру
EntityTexture m,m_tex

; Включаем анимацию md2
PositionEntity m,0,-35,70
RotateEntity m,0,0,0
AnimateMD2 m,1,0.3,1,24

While Not KeyDown( 1 )
If KeyHit(200) AnimateMD2 m,1,0.3,25,49

UpdateWorld
RenderWorld
Flip
Wend

End




Часовой пояс GMT +4, время: 17:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot