Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 24.01.2013, 14:06   #1
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 15
Написано 2 полезных сообщений
(для 3 пользователей)
Лампочка Смена анимации с помощью KeyDown

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

А что тут не понятного? KeyHit реагирует один раз после нажатия. KeyDown много раз пока не отпустишь клавишу. При KeyDown текущий кадр переносится на 1 кадр пока эта клавиша нажата. Если хочешь приципить анимацию к движению объекта, просто сделай проверку внутри кейдауна на проигрывание анимации объектом если есть уже анимация не вкючать новую.
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 14:25   #3
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 15
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Смена анимации с помощью KayDown

Спасибо конечно, но мне это ни о чём не говорит. Если не трудно код пожалуйста напишите для наглядности.
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 14:39   #4
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Смена анимации с помощью KayDown

Если это вам ни о чем не говорит, значит рано браться за программирование игр. едиственное что могу подсказать : команда проверяющая анимированность объекта - Animate(Ent).
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 14:46   #5
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 15
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Смена анимации с помощью KayDown

Я боюсь что б не было поздно Ведь время не стоит на месте...Про Animate(Ent) я знаю, а вот как его правильно вставить в цикл ? Вот тут у меня соображения не хватает. Наверно я староват уже для понимания Ну ничего, если вы мне не можете объяснить попробую обратиться на другой форум... Может там мне не скажут что я недотёпа...
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 14:51   #6
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Смена анимации с помощью KeyDown

Тфу, подрукой блитза нет. Не Animate() а Animating() кажется.
Рановато, и недотепа, разные вещи.
Если кейдаун (57)
_____Если анимейтинг(Энт)
_________ничего...(или что то)
_____иначе
_________анимейт(Энт)
_____конец если
конец если
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 14:55   #7
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 15
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Смена анимации с помощью 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
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 15:04   #8
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Смена анимации с помощью KeyDown

If KeyDown(200)
if not Animating(men2)
Animate m,1,0.5,men2
endif
endif

тоже самое с другой кнопкой. Тебе в предыдущей теме тоже хороший код привели.
http://forum.boolean.name/showthread.php?t=7338
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 15:06   #9
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 15
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Смена анимации с помощью KeyDown

Сейчас попробую...

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

Хотя я не могу утверждать что вы не правы, не знаю, может дело в самой анимации?
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 15:24   #10
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Смена анимации с помощью KeyDown

"Entity does not exist" дык интити нету, проверь правильность пути к файлу, названия переменных, скорее всего в этом косяк, сам сколько раз мучился с подобным, а потом оказывалась впопыхах переменную не так назвал.
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 15:33   #11
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 15
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Смена анимации с помощью KeyDown

Может не надо использовать с B3D ExtractAnimSeq ? Ведь в начале он загружает модель, а потом при проверке ошибка...
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 15:36   #12
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Смена анимации с помощью KeyDown

Синь файлик модели я посмотрю.

И какой версии блица ты пользующийся?
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 15:58   #13
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 15
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Смена анимации с помощью KeyDown

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

Ой.. забыл скинуть текстуру...ну да и так будет понятно...
Вложения
Тип файла: rar Oficer.rar (3.90 Мб, 565 просмотров)
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 16:03   #14
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Смена анимации с помощью KeyDown

Сообщение от Niburiec Посмотреть сообщение
Версия 1.98 А модель я позаимствовал из FPS Креатора (да простят меня они). В архиве X (оригинал), B3D я его просто конвертнул в Fragmotion и MD2, тут я пытался сделать по науке, не знаю вышло ли...
Вопервых X несодержит анимацию, но я вижу что ты разобрался.
Версия 1.99, у меня всё работает, ошибок нет. Блиц глючит, попробуй запустить в оконном режиме.
(Offline)
 
Ответить с цитированием
Старый 24.01.2013, 16:18   #15
Niburiec
AnyKey`щик
 
Регистрация: 24.01.2013
Сообщений: 15
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Смена анимации с помощью 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

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com