|
3D-программирование Вопросы, касающиеся программирования 3D мира |
05.02.2009, 01:08
|
#1
|
Нуждающийся
Регистрация: 23.12.2007
Сообщений: 72
Написано 4 полезных сообщений (для 12 пользователей)
|
Вернуть анимацию
Загрузил анимацию для обьекта в самом начале программы, потом по нажатию клавиши для этого обьета запускаеться 2 анимация.. как зделать так чтобы после оконьчания ее на автомате запускалась первая анимация..
мозгов не хватает самому додуматься.. пытался через флагову переменную но получаеться что 2 анимация работает только при нажатой кнопки..
|
(Offline)
|
|
05.02.2009, 08:18
|
#2
|
Знающий
Регистрация: 24.12.2008
Сообщений: 280
Написано 145 полезных сообщений (для 775 пользователей)
|
Ответ: Вернуть анимацию
можно использовать select
ExtractAnimSeq model,10,10
ExtractAnimSeq model,10,20
;--------------------------------UPDATE------
select anim
case 0
If AnimSeq(model)<>1 Then Animate model,1,1,1,0
if keyhit(57) then anim=1 ;давим клаву
case 1
If AnimSeq(model)<>2 Then Animate model,1,1,2,0
If AnimTime(model)>=10 Then anim=0 ;первая анимация
end select
|
(Offline)
|
|
05.02.2009, 08:51
|
#3
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Re: Вернуть анимацию
пытался через флагову переменную но получаеться что 2 анимация работает только при нажатой кнопки..
|
экстрасэнс, anyone ?
|
(Offline)
|
|
05.02.2009, 17:17
|
#4
|
Нуждающийся
Регистрация: 23.12.2007
Сообщений: 72
Написано 4 полезных сообщений (для 12 пользователей)
|
Re: Вернуть анимацию
А проще нельзя?... Например просто узнать проигрываться сейчас анимация для данного меша или нет... если нет то запускает 1 анимацию..
|
(Offline)
|
|
05.02.2009, 18:25
|
#5
|
Нуждающийся
Регистрация: 23.12.2007
Сообщений: 72
Написано 4 полезных сообщений (для 12 пользователей)
|
Re: Вернуть анимацию
а может кто нибудь показать пример как это делается?
Примерно вот так хочеться зделать
Repeat
проверка играет ли анимация для данного меша
если играет то ничего не далать
если не играет то запустить такую то анимацию
; какэто все выразить кодом
|
(Offline)
|
|
05.02.2009, 18:54
|
#6
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Вернуть анимацию
а справка по командам не работает?
|
(Offline)
|
|
05.02.2009, 19:11
|
#7
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Вернуть анимацию
покажи как ??
to NitE, вообще не вижу смысла в твоих 2 постах !!
Max Payne, тебе же Raion написал !! Что непонятно там ?? если хочеш именно это:
Repeat
проверка играет ли анимация для данного меша
если играет то ничего не далать
если не играет то запустить такую то анимацию
|
то нужно немножко переделать код, но команды те самые (AnimSeq, AnimTime и Animate), справка в помощь (H@NON, +1) !!
|
(Offline)
|
|
05.02.2009, 21:43
|
#8
|
Нуждающийся
Регистрация: 23.12.2007
Сообщений: 72
Написано 4 полезных сообщений (для 12 пользователей)
|
Re: Вернуть анимацию
model=loadanimmesh("shit")
anim1=extractanimseq(model,10,20)
anim2=extractanimseq(model,21,30)
repeat
if keyhit(57)
animate model,0,1,1,0
endif
if animseq(model)=1 and animating(model)=0 animate model,0,1,2,0
until keyhit(1)
Круто конечно но как это работает... не пойму как сюда впихнуть свою анимацию.. откуда она загружаеться...
У меня примерно так
cub11=LoadAnimMesh("3d models/2sol/sol.b3d")
PositionEntity cub11,22,1.2,-15
anim1=LoadAnimSeq (cub11,"3d models/2sol/a1.b3d")
anim2=LoadAnimSeq (cub11,"3d models/2sol/a2.b3d")
Animate cub11,1,0.3,anim1
Repeat
If KeyDown(17)Then Animate (cub11,3,0.3,anim2)
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.02.2009, 21:55
|
#9
|
Нуждающийся
Регистрация: 23.12.2007
Сообщений: 72
Написано 4 полезных сообщений (для 12 пользователей)
|
Re: Вернуть анимацию
cub11=LoadAnimMesh("3d models/2sol/sol.b3d")
PositionEntity cub11,22,1.2,-15
anim1=LoadAnimSeq (cub11,"3d models/2sol/a1.b3d")
anim2=LoadAnimSeq (cub11,"3d models/2sol/a2.b3d")
anim3=ExtractAnimSeq(cub11,10,20)
anim4=ExtractAnimSeq(cub11,21,30)
Repeat
If KeyHit(17)
Animate cub11,0,1,1,0
EndIf
If AnimSeq(cub11)=1 And Animating(cub11)=0 Animate cub11,0,1,2,0
не знаю я как связать мой код с твоим
|
(Offline)
|
|
05.02.2009, 22:18
|
#10
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: Вернуть анимацию
JohnK здесь не хватает Солженицина
|
(Offline)
|
|
06.02.2009, 01:11
|
#11
|
Нуждающийся
Регистрация: 23.12.2007
Сообщений: 72
Написано 4 полезных сообщений (для 12 пользователей)
|
Re: Вернуть анимацию
во во.. фотка прям про меня я так уже 2 дня сижу..
все равно не вьеду... перечитал справку по командам ,почти наизусть знаю..
просто обьясните поподробней как это работает...
mesh=LoadAnimMesh( base_mesh$ ) ;одна сплошная секция анимации номер 0.
ExtractAnimSeq( mesh,0,30 )
У меня мешь и анимация это 2 разных меша... какой грузить в mesh=LoadAnimMesh( base_mesh$ ) ... если 1 то это просто мешь.. если второй то это анимация и как ее потом прикрутить к 1 мешу.
в бейсике я бы зделал так
If keydown(17) then animate(cub11,1,0.2,anim1) else animate(cub11,1,0.2,anim2)
но в блице это не прокатит.. просто тут другой принцип и я его не пойму никак...
какие то номера кадров анимации...
Может ко нибудь исравить этот код... пиво с меня
cub11=LoadAnimMesh("3d models/2sol/sol.b3d")
PositionEntity cub11,22,1.2,-15
anim1=LoadAnimSeq (cub11,"3d models/2sol/a1.b3d")
anim2=LoadAnimSeq (cub11,"3d models/2sol/a2.b3d")
Animate cub11,1,0.3,anim1
Repeat
If KeyDown(17)Then Animate (cub11,3,0.3,anim2)
надо чтоб того как я нажму клавишу и после проигрования второй анимации просто запускалась вот эта команда Animate cub11,1,0.3,anim1
|
(Offline)
|
|
06.02.2009, 05:29
|
#12
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Вернуть анимацию
NitE , я тебя сколько раз уже предупреждал - не пиши всякую херню
ну блин, не знаешь темы - пройди мимо.
человек подождет подождет, и за ум возьмется - начнет хелп читать, семплы смотреть, по форуму поиск заюзает.
а с твоими неработающими подсказками точно бросит программирование
зы. кто не понял: все советы тов. NitE , мягко говоря не компетентны, неправильны и половина кода не рабочая. как делается анимация раз 50 объяснялось в разных темах на форуме ранее.
http://forum.boolean.name/showpost.p...5&postcount=19
__________________
Последний раз редактировалось tormoz, 06.02.2009 в 05:34.
|
(Offline)
|
|
06.02.2009, 10:44
|
#13
|
Нуждающийся
Регистрация: 23.12.2007
Сообщений: 72
Написано 4 полезных сообщений (для 12 пользователей)
|
Re: Вернуть анимацию
;------загрузка--------
player=LoadAnimMesh("player.b3d")
ExtractAnimSeq(player,0,9)
ExtractAnimSeq(player,10,70)
ExtractAnimSeq(player,71,100)
;-----------цикл-------
If key_move
a_mode=1
a_speed=0.5
a_player=1
a_tran=20
endif
If key_attak
a_mode=3
a_speed=1
a_player=2
a_tran=2
endif
If key_jump
a_mode=3
a_speed=1
a_player=3
a_tran=8
endif
aseq_player=AnimSeq(player)
If aseq_player<>a_player
Animate player,a_mode,a_speed,a_player,a_tran
Endif
с циклом все понятно, какую клавишу нажмеш такие параметры и будут в анимации..
непонятно загрузка меша...
player=LoadAnimMesh("player.b3d")
ExtractAnimSeq(player,0,9)
ExtractAnimSeq(player,10,70)
ExtractAnimSeq(player,71,100)
что вы имеете ввиду под player, сам меш или его анимацию?
у меня это 2 разных файла?
|
(Offline)
|
|
06.02.2009, 11:45
|
#14
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Вернуть анимацию
ExtractAnimSeq(player,0,9)
|
анимсеки из плеера !! т.е. анимация в том же файле !!
у меня это 2 разных файла?
|
тогда попробуй это: http://forum.boolean.name/showthread.php?t=7338
|
(Offline)
|
|
06.02.2009, 12:14
|
#15
|
Нуждающийся
Регистрация: 23.12.2007
Сообщений: 72
Написано 4 полезных сообщений (для 12 пользователей)
|
Re: Вернуть анимацию
тогда попробуй это: http://forum.boolean.name/showthread.php?t=7338
там все понятно, там загружаеться 2 анимации и каждая запускаеться разной клавишей...у меня немного другое... Попробую обьяснит полутьше..Надо чтоб после 1 анимации на автомате запускалась вторая и все.
Загружаються у меня анимации так
anim1=LoadAnimSeq (cub11,"3d models/2sol/a1.b3d")
anim2=LoadAnimSeq (cub11,"3d models/2sol/a2.b3d") ит.
вот мой код
cub11=LoadAnimMesh("3d models/2sol/sol.b3d") ; агрузка меша
PositionEntity cub11,22,1.2,-15
anim1=LoadAnimSeq (cub11,"3d models/2sol/a1.b3d") загрузка 1 анимации
anim2=LoadAnimSeq (cub11,"3d models/2sol/a2.b3d") загрузка 2 аниации
Animate cub11,1,0.3,anim1 запуск 1 анимации
Repeat
If KeyDown(17)Then Animate (cub11,3,0.3,anim2) запуск 2 анимации
как вернуть первую анимации без нажатия кнопок после того как закончит играть 2 анимация..
Ps. У меня получилась то что я хотел но с использованием Goto 10 раз..
хочеться все по другому зделать...
Ведь есьже команда которая проверяет играет ли в данной момент анимация или нет.. тока как ей воспользоваться?
Последний раз редактировалось SBJoker, 16.02.2011 в 21:53.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:34.
|