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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 08.12.2009, 20:26   #1
Toon3D
AnyKey`щик
 
Аватар для Toon3D
 
Регистрация: 08.12.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Анимация: Нажал - началась, отжал - закончилась

Здравствуйте! У меня вот возник вопрос:
Уже дня два, пытаюсь найти как при нажатии кнопки использовать анимацию. Нашел, получилось. Но теперь проблема другая: В моем случае анимация бег, при нажатии кнопки №200 (стрелочка вверх), hero (персонаж) передвигается вперед, с использованием анимации runplayer.b3d. Игра загрузилась. Персонаж стоит как на распятии (так и должно быть, стандартная поза модели), и при нажатии стрелочки, он передвигается вперед и проигрывается анимация (mode:1, повторение), но когда я отпускаю клавишу, анимация продолжает проигрываться, но передвигаться, как и должно быть, он не продолжает.
Я пытаюсь сделать что бы при нажатии стрелочки, анимация проигрывалась, а при отжатии, проигрывалась анимация idle.b3d. То есть, что бы когда стрелочку отпускаешь, он просто стоял на месте, а не бежал. Думаю вопрос выразил правильно и ясно, вот то что я наляпал, для наглядки
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()

hero=LoadAnimMesh("models/player.b3d")
idle=LoadAnimSeq(hero,"anim/idle.b3d")
run=LoadAnimSeq(hero,"anim/runplayer.b3d")
PositionEntity hero,3,0,3

Ground=CreateTerrain(128)

Camera=CreateCamera(hero)
RotateEntity camera,25,0,0

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

Repeat
If Not KeyDown(1) MoveEntity hero,0,-0.1,0
If KeyHit(200) Then Animate hero,1,0.5,run,10
If Not KeyDown(200) Then Animate hero,1,0.5,idle,10
If KeyDown(200) MoveEntity hero,0,0,0.1
If KeyDown(208) MoveEntity hero,0,0,-.1
If KeyDown(203) TurnEntity hero,0,2,0
If KeyDown(205) TurnEntity hero,0,-2,0
UpdateWorld
RenderWorld
Flip
Until KeyHit (1)
End
Вот с таким кодом что выше, когда отпускаешь стрелочку, анимация останавливается на том кадре, на каком я её отпустил, а мне нужно именно что бы останавливался на анимации idle.b3d .
Объяснил кажется подробно, заранее спасибо за ответ!

Последний раз редактировалось Toon3D, 09.12.2009 в 15:34.
(Offline)
 
Ответить с цитированием
Старый 08.12.2009, 20:43   #2
Fatalix3d
Разработчик
 
Аватар для Fatalix3d
 
Регистрация: 28.12.2008
Адрес: Алматы
Сообщений: 486
Написано 252 полезных сообщений
(для 1,160 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

hero=LoadAnimMesh( "models/player.b3d" )
LoadAnimSeq hero,"anim/runplayer.b3d"

Animate hero,2

while not keyhit(1)

If KeyDown(200)
If AnimSeq(hero)=0 Animate hero,1,.5,1,10
Else
If AnimSeq(hero)=1 Animate hero,2,1,0,10
EndIf
Вроде так
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Fatalix3d за это полезное сообщение:
RlexGm (12.03.2010), Toon3D (08.12.2009)
Старый 08.12.2009, 20:44   #3
KingMaks
Знающий
 
Аватар для KingMaks
 
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений
(для 95 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

key200=false

If Not KeyDown(1Then key200=False

If KeyDown(200Then
  
If AnimSeq(animchild) <> run Then Animate animchild,1,1,run
End 
If

If 
KeyDown(205Then
  
If AnimSeq(animchild) <> run Then Animate animchild,1,1,run
End 
If

If 
KeyDown(203Then
  
If AnimSeq(animchild) <> run Then Animate animchild,1,1,run
End 
If

If 
key200=False Then 
  
If AnimSeq(animchild)=run Then Animate animchild,1,1,idle 
End 
If 
это когда придеца ставить анимации не на одну кнопку а на много
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Toon3D (08.12.2009)
Старый 08.12.2009, 20:46   #4
Toon3D
AnyKey`щик
 
Аватар для Toon3D
 
Регистрация: 08.12.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

Сообщение от KingMaks Посмотреть сообщение
If KeyHit(200) Then Animate hero,1,0.5,run,10
If Not KeyDown(200) Then Animate hero,1,0.5,idle,10

отак нада:
If KeyDown(200) Then Animate animseq hero,1,0.5,run,10
If Not KeyDown(200) Then Animate animseq hero,1,0.5,idle,10
"Expecting end-of-line"
(Offline)
 
Ответить с цитированием
Старый 08.12.2009, 20:53   #5
Toon3D
AnyKey`щик
 
Аватар для Toon3D
 
Регистрация: 08.12.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

Сообщение от KingMaks Посмотреть сообщение
key200=false

If Not KeyDown(1Then key200=False

If KeyDown(200Then
  
If AnimSeq(animchild) <> run Then Animate animchild,1,1,run
End 
If

If 
KeyDown(205Then
  
If AnimSeq(animchild) <> run Then Animate animchild,1,1,run
End 
If

If 
KeyDown(203Then
  
If AnimSeq(animchild) <> run Then Animate animchild,1,1,run
End 
If

If 
key200=False Then 
  
If AnimSeq(animchild)=run Then Animate animchild,1,1,idle 
End 
If 
это когда придеца ставить анимации не на одну кнопку а на много
В таком случае надо писать:
hero=LoadAnimMesh("models/player.b3d")
animchild=FindChild(hero,...)
idle=ExtractAnimSeq(animchild...
и так далее. Ну вообщем что-то типа такого, а это уже для меня другой урок
(Offline)
 
Ответить с цитированием
Старый 08.12.2009, 22:17   #6
KingMaks
Знающий
 
Аватар для KingMaks
 
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений
(для 95 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

Сообщение от Toon3D Посмотреть сообщение
В таком случае надо писать:
hero=LoadAnimMesh("models/player.b3d")
animchild=FindChild(hero,...)
idle=ExtractAnimSeq(animchild...
и так далее. Ну вообщем что-то типа такого, а это уже для меня другой урок
а чоб так и не написать? помоему нормальный способ и урок тоже самый
(Offline)
 
Ответить с цитированием
Старый 08.12.2009, 22:44   #7
DeadElf
ПроЭктировщик
 
Регистрация: 22.07.2009
Адрес: Московский Метрополитен)))
Сообщений: 100
Написано 25 полезных сообщений
(для 31 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

хм... где-то я уже видел такую тему?
(Offline)
 
Ответить с цитированием
Старый 08.12.2009, 23:25   #8
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

http://forum.boolean.name/showthread...849#post128849
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Toon3D (09.12.2009)
Старый 09.12.2009, 22:21   #9
Toon3D
AnyKey`щик
 
Аватар для Toon3D
 
Регистрация: 08.12.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

В общем, думал сюда, в эту тему, уже писать не буду, думал разберусь уже 100%, и урок глянул который мне дали, и по примеру делал что показывали, но анимации будто нет, просто не показывается, и ошибки так же не выдает, и экспортирую я точно знаю что правильно! Не знаю как еще можно пробовать, последний шанс только то, что вы найдете какую-то ошибку. Три дня на смарку и никакого результата . Сегодня прошмаргал все 5 страниц поиска с результатами "анимация", много конечно чего похоже, но была решена не доконца, или автор сам разобрался а в тему ничего не сказал! Сегодня еще буду искать, но думаю вы не откажетесь мне помочь
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()

Const player=1,stena=2

hero=LoadAnimMesh("models/player.b3d")
animchild=FindChild(hero,"01")
seqidle=LoadAnimSeq(animchild,"anim/idle.b3d")
seqrun=LoadAnimSeq(animchild,"anim/runplayer2.b3d")

PositionEntity hero,3,0,3

xata=LoadMesh("models/xata.b3d")
PositionEntity xata,15,-2,50

Ground=CreateTerrain(128)

Camera=CreateCamera(hero)

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

prep1=CreateCube()
PositionEntity prep1,10,2,30
ScaleEntity prep1,5,3,0.2
prep2=CreateCube()
PositionEntity prep2,5,2,35
ScaleEntity prep2,0.2,3,5

PositionEntity Camera,0,1,-5
PositionEntity Ground,0,-1,0

texground=LoadTexture("img/ground.jpg")
texstena=LoadTexture("img/stena.jpg")

EntityTexture Ground,texground
EntityTexture prep1,texstena
EntityTexture prep2,texstena
ScaleTexture texground,5,5

EntityType hero,player
EntityType ground,stena
EntityType prep1,stena
EntityType prep2,stena
EntityType xata,stena
Collisions player,stena,2,3

Repeat
If Not KeyDown(200) Then
	If AnimSeq(animchild) <> seqidle Then Animate animChild,1,0.2,seqidle
	EndIf
If KeyDown(200) Then
	If AnimSeq(animChild) <> seqrun Then Animate animChild,1,0.2,seqrun
	Else
	If AnimSeq(animChild) <> seqidle Then Animate animChild,1,0.2,seqidle
EndIf
If Not KeyDown(1) MoveEntity hero,0,-0.1,0
If KeyDown(200) MoveEntity hero,0,0,0.1
If KeyDown(208) MoveEntity hero,0,0,-.1
If KeyDown(203) TurnEntity hero,0,2,0
If KeyDown(205) TurnEntity hero,0,-2,0

UpdateWorld
RenderWorld
Flip
Until KeyHit (1)
End
На этот раз весь код выложу, так как может у меня там что-то где-то неправильно вообще не в том месте где я думал!
__________________
StimuL
Turbo-Dizel
(Offline)
 
Ответить с цитированием
Старый 09.12.2009, 22:34   #10
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

If Not KeyDown(200) Then
	If AnimSeq(animchild) <> seqidle Then Animate animChild,1,0.2,seqidle
	EndIf
If KeyDown(200) Then
	If AnimSeq(animChild) <> seqrun Then Animate animChild,1,0.2,seqrun
	Else
	If AnimSeq(animChild) <> seqidle Then Animate animChild,1,0.2,seqidle
EndIf
замени на
If KeyDown(200) Then
	If AnimSeq(animChild) <> seqrun Then Animate animChild,1,0.2,seqrun
	Else
	If AnimSeq(animChild) <> seqidle Then Animate animChild,1,0.2,seqidle
EndIf
и попробуй вместо animChild использовать hero в условиях
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Toon3D (09.12.2009)
Старый 09.12.2009, 22:48   #11
Toon3D
AnyKey`щик
 
Аватар для Toon3D
 
Регистрация: 08.12.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

Сообщение от DimasSup Посмотреть сообщение
попробуй вместо animChild использовать hero в условиях
Тогда у меня получается вообще вид с первого лица, когда hero прописую, а с animChild в норме вроде всё.
Но а если не менять на hero, а просто вставить, что ты дал, он все равно в исходной позиции ездит!
__________________
StimuL
Turbo-Dizel
(Offline)
 
Ответить с цитированием
Старый 09.12.2009, 22:51   #12
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

скинь проект весь. с медией, чтобы моно было запустить
(Offline)
 
Ответить с цитированием
Старый 10.12.2009, 15:54   #13
Toon3D
AnyKey`щик
 
Аватар для Toon3D
 
Регистрация: 08.12.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Анимация: Нажал - началась, отжал - закончилась

Вообщем я решил пройти все уроки, мне недавно дали еще, когда пройду их, тогда буду спрашевать, думаю там проблема решится
__________________
StimuL
Turbo-Dizel
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация Sand Основной форум 9 14.12.2009 21:44
Мой первый законченный проект BlackDragon Проекты на Blitz3D 2 22.12.2007 23:18
Закон Мерфи impersonalis Болтовня 1 13.07.2007 10:21
Люди или закон джунглей? ingko Болтовня 7 24.07.2006 19:55


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


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