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=5414)

JeSss 24.12.2007 18:01

Двойная анимация
 
Как сделать чтобы при нажатии кнопки проигравалось сразу 2 анимации?

HolyDel 24.12.2007 18:06

Re: Двойная анимация
 
а как ты делаеш чтобы у тебя проиграывалась одна?

JeSss 24.12.2007 18:40

Re: Двойная анимация
 
Цитата:

Сообщение от HolyDel
а как ты делаеш чтобы у тебя проиграывалась одна?

Сначала
box = LoadAnimMesh("normal.b3d")
LoadAnimSeq box, ("left.b3d")
LoadAnimSeq box, ("right.b3d")

затем в цикле
If KeyDown(17)
If AnimSeq(Box)=0 Animate Box,2,1,2,10
Else
If AnimSeq
(Box)=1 Or AnimSeq(Box)=2 Animate Box, 2,1,0,10
EndIf

HolyDel 24.12.2007 18:41

Re: Двойная анимация
 
Сначала

Цитата:

box = LoadAnimMesh("normal.b3d")
LoadAnimSeq box, ("left.b3d")

box2 = LoadAnimMesh("normal2.b3d")
LoadAnimSeq box2, ("left2.b3d")


затем в цикле
If KeyDown(17)
If AnimSeq(Box)=0
Animate Box,2,1,2,10
Animate Box2,2,1,2,10
endif
Else
If AnimSeq(Box)=1 Or AnimSeq(Box)=2 Animate Box, 2,1,0,10
If AnimSeq(Box2)=1 Or AnimSeq(Box2)=2 Animate Box2, 2,1,0,10

EndIf
найди 10 отличий

JeSss 24.12.2007 19:44

Re: Двойная анимация
 
теперь ни 1 из 2 анимаций непашет(

HolyDel 24.12.2007 19:52

Re: Двойная анимация
 
эмм. а у тебя есть файлы
"normal2.b3d"
и
"left2.b3d"?


далее правочка:
Код:

If KeyDown(17)
If AnimSeq(Box)=0
Animate Box,2,1,2,10
endif
If AnimSeq(Box2)=0
Animate Box2,2,1,2,10
endif
Else
If AnimSeq(Box)=1 Or AnimSeq(Box)=2 Animate Box, 2,1,0,10
If AnimSeq(Box2)=1 Or AnimSeq(Box2)=2 Animate Box2, 2,1,0,10

EndIf


JeSss 24.12.2007 20:00

Re: Двойная анимация
 
да, эти файлы я сделал, но нифига непашет...
Кстати, и этот тоже нет(

HolyDel 24.12.2007 20:14

Re: Двойная анимация
 
даже хз.
может ето из за забытого
LoadAnimSeq box, ("right.b3d")
и соответственно
LoadAnimSeq box2, ("right2.b3d")
?

JeSss 24.12.2007 20:36

Re: Двойная анимация
 
не, наврятли, я кстати ту страку удалил...

moka 27.12.2007 13:06

Re: Двойная анимация
 
Пролистай чайлды в корню модельки, и пробуй анимацию грузить к чайлду с именем модельки, и анимировать непосредственно этот чайлд.

JeSss 27.12.2007 21:35

Re: Двойная анимация
 
Я непонял чё ты щас сказал т.к. я про чайлды ..... хз)

moka 28.12.2007 11:48

Re: Двойная анимация
 
Тогда го справка, учи функции: CountChildren, GetChild, FindChild, LoadAnimSeq. ;)

HolyDel 28.12.2007 12:11

Re: Двойная анимация
 
Итак, дамы и господа, если вы хотите, затекстурить, установить альфу, режим блендинга, или еще что либо для анимированной модели, то делайте ето в рекурсии. Марк - жопа, и не написал необходимых функций, но мы то с вами, тоже не дураки, поетому можем написать сами.

вот всякие ф-ии для работы с анимированными объектами

Код:

Function AnimEntityTexture(aent,tex,frame=0,layer=0)
Local ent
EntityTexture aent,tex,frame,layer
For c=1 To CountChildren(aent)
        ent=GetChild(aent,c)
        If CountChildren(ent)>0
        AnimEntityTexture(ent,tex,frame,layer)
        Else
        If EntityClass(ent)="Mesh" Then EntityTexture ent,tex,frame,layer
        EndIf
Next
End Function

Function AnimEntityColor(aent,r,g,b)
Local ent
EntityColor aent,r,g,b
For c=1 To CountChildren(aent)
        ent=GetChild(aent,c)
        If CountChildren(ent)>0
        AnimEntityColor(ent,r,g,b)
        Else
        If EntityClass(ent)="Mesh" Then EntityColor ent,r,g,b
        EndIf
Next
End Function

Function AnimEntityAlpha(aent,a#)
Local ent
EntityAlpha aent,a
For c=1 To CountChildren(aent)
        ent=GetChild(aent,c)
        If CountChildren(ent)>0
        AnimEntityAlpha(ent,a)
        Else
        If EntityClass(ent)="Mesh" Then EntityAlpha ent,a
        EndIf
Next
End Function


Function AnimEntityFX(aent,fx)
Local ent
EntityFX aent,fx
For c=1 To CountChildren(aent)
        ent=GetChild(aent,c)
        If CountChildren(ent)>0
                AnimEntityFX(ent,fx)
        Else
                If EntityClass(ent)="Mesh" Then EntityFX ent,blend
        EndIf
Next
End Function

Function AnimEntityBlend(aent,blend)
Local ent
EntityBlend aent,blend
For c=1 To CountChildren(aent)
        ent=GetChild(aent,c)
        If CountChildren(ent)>0
                AnimEntityBlend(ent,blend)
        Else
                If EntityClass(ent)="Mesh" Then EntityBlend ent,blend
        EndIf
Next
End Function

Function AnimEntityPickMode(aent,mode)
        EntityPickMode aent,mode,0
        For i=1 To CountChildren(aent)
                AnimEntityPickMode(GetChild(aent,i),mode)
        Next
End Function

Function AnimEntityAnimate(aent,mode=1,speed#=1,sequence=0,transition#=0)
        Local ent
        Animate(aent,mode,speed#,sequence,transition#)
        For c=1 To CountChildren(aent)
                ent=GetChild(aent,c)
                If CountChildren(ent)>0
                        AnimEntityAnimate(ent,mode,speed#,sequence,transition#)
                Else
                        Animate(ent,mode,speed#,sequence,transition#)
                EndIf
        Next       
End Function



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

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