forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Вернуть анимацию (http://forum.boolean.name/showthread.php?t=7774)

Max Payne 05.02.2009 01:08

Вернуть анимацию
 
Загрузил анимацию для обьекта в самом начале программы, потом по нажатию клавиши для этого обьета запускаеться 2 анимация.. как зделать так чтобы после оконьчания ее на автомате запускалась первая анимация..

мозгов не хватает самому додуматься.. пытался через флагову переменную но получаеться что 2 анимация работает только при нажатой кнопки..

Raion 05.02.2009 08:18

Ответ: Вернуть анимацию
 
можно использовать 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

NitE 05.02.2009 08:51

Re: Вернуть анимацию
 
Цитата:

пытался через флагову переменную но получаеться что 2 анимация работает только при нажатой кнопки..
экстрасэнс, anyone ?

Max Payne 05.02.2009 17:17

Re: Вернуть анимацию
 
А проще нельзя?... Например просто узнать проигрываться сейчас анимация для данного меша или нет... если нет то запускает 1 анимацию..:stop:

Max Payne 05.02.2009 18:25

Re: Вернуть анимацию
 
а может кто нибудь показать пример как это делается?

Примерно вот так хочеться зделать

Repeat

проверка играет ли анимация для данного меша
если играет то ничего не далать
если не играет то запустить такую то анимацию

; какэто все выразить кодом :dontknow:

H@NON 05.02.2009 18:54

Ответ: Вернуть анимацию
 
а справка по командам не работает?

IGR 05.02.2009 19:11

Ответ: Вернуть анимацию
 
Цитата:

да, можно...
покажи как ??
to NitE, вообще не вижу смысла в твоих 2 постах !!

Max Payne, тебе же Raion написал !! Что непонятно там ?? если хочеш именно это:
Цитата:

Repeat

проверка играет ли анимация для данного меша
если играет то ничего не далать
если не играет то запустить такую то анимацию
то нужно немножко переделать код, но команды те самые (AnimSeq, AnimTime и Animate), справка в помощь (H@NON, +1) !!

Max Payne 05.02.2009 21:43

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)

Max Payne 05.02.2009 21:55

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




не знаю я как связать мой код с твоим :dontknow: :''((

dimanche13 05.02.2009 22:18

Ответ: Вернуть анимацию
 
JohnK здесь не хватает Солженицина :)

Max Payne 06.02.2009 01:11

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)

но в блице это не прокатит.. просто тут другой принцип и я его не пойму никак...
какие то номера кадров анимации...:dontknow:
Может ко нибудь исравить этот код... пиво с меня

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
:wallbash: :wallbash: :wallbash: :wallbash: :wallbash: :wallbash:

tormoz 06.02.2009 05:29

Ответ: Вернуть анимацию
 
NitE , я тебя сколько раз уже предупреждал - не пиши всякую херню
ну блин, не знаешь темы - пройди мимо.
человек подождет подождет, и за ум возьмется - начнет хелп читать, семплы смотреть, по форуму поиск заюзает.
а с твоими неработающими подсказками точно бросит программирование

зы. кто не понял: все советы тов. NitE , мягко говоря не компетентны, неправильны и половина кода не рабочая. как делается анимация раз 50 объяснялось в разных темах на форуме ранее.

http://forum.boolean.name/showpost.p...5&postcount=19

Max Payne 06.02.2009 10:44

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 разных файла?

IGR 06.02.2009 11:45

Ответ: Вернуть анимацию
 
Цитата:

ExtractAnimSeq(player,0,9)
анимсеки из плеера !! т.е. анимация в том же файле !!
Цитата:

у меня это 2 разных файла?
тогда попробуй это: http://forum.boolean.name/showthread.php?t=7338

Max Payne 06.02.2009 12:14

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 раз..
хочеться все по другому зделать...

Ведь есьже команда которая проверяет играет ли в данной момент анимация или нет.. тока как ей воспользоваться?


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

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