Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Гусеница
Снова траблы. Я хочу гусеницу представить не через dim(массив), а через type (тип)
Вот я вынес из кода одну гусеницу, и не понимаю...не могу найти ошибку и даже понять как это сотворить?
track2 - сделана через массив и работает (если закомментить все, что касается track)
вот код

Graphics3D 640,480,16,2
Const UPS=60
Const max=10
Dim track2(Max);track
Type track
Field obj[10]
End Type
cam=CreateCamera()
RotateEntity cam,90,0,0
PositionEntity cam,0,3,0
l=CreateLight()
track(0)=CreateCube()
ScaleEntity track(0),.025,.025,.025
HideEntity track(0)
;animated track
For i = 1 To Max
t.track=New track
t\obj = CopyEntity(track(0))
track2(i) = CopyEntity(track(0))
For t.track=Each track
RotateEntity t\obj,0,0,0
PositionEntity t\obj,-1,-.25,.6
SetAnimKey t\obj,0
RotateEntity t\obj,0,0,0
PositionEntity t\obj,-1,.25,.6
SetAnimKey t\obj,60
RotateEntity t\obj,0,0,0
PositionEntity t\obj,1,.25,.6
SetAnimKey t\obj,120
RotateEntity t\obj,0,0,0
PositionEntity t\obj,1,-.25,.6
SetAnimKey t\obj,180
RotateEntity t\obj,0,0,0
PositionEntity t\obj,-1,-.25,.6
SetAnimKey t\obj,240
RotateEntity track2(i),0,0,0
PositionEntity track2(i),-1,-.25,-.6
SetAnimKey track2(i),0
RotateEntity track2(i),0,0,0
PositionEntity track2(i),-1,.25,-.6
SetAnimKey track2(i),60
RotateEntity track2(i),0,0,0
PositionEntity track2(i),1,.25,-.6
SetAnimKey track2(i),120
RotateEntity track2(i),0,0,0
PositionEntity track2(i),1,-.25,-.6
SetAnimKey track2(i),180
RotateEntity track2(i),0,0,0
PositionEntity track2(i),-1,-.25,-.6
SetAnimKey track2(i),240
Next
;animation set
For i=1 To Max
For t.track=Each track
AddAnimSeq t\obj,240
AddAnimSeq track2(i),240
Animate t\obj,1,1,0, i*24
Animate track2(i),1,1,0, i*24
Next
Next
i=0
While i<240
UpdateWorld
i=i+1
Wend
period=1000/UPS
time=MilliSecs()-period
Repeat
Repeat
elapsed=MilliSecs()-time
Until elapsed
ticks=elapsed/period
tween#=Float(elapsed Mod period)/Float(period)
For k=1 To ticks
time=time+period
If KeyHit(1) End
UpdateWorld
Next
If Not KeyDown(200) Or KeyDown(208)
For i=1 To Max
For t.track=Each track
If t\obj<>0 Then
Local p#=AnimTime#(track(i))
SetAnimTime track(i),p#
EndIf
If track2(i)<>0 Then
p#=AnimTime#(track2(i))
SetAnimTime track2(i),p#
EndIf
Next
Next
EndIf
If KeyHit(208) Then
p#=AnimTime#(track(1))
For i=1 To Max
For t.track=Each track
Animate t\obj,1,-1,0, i*24
Animate track2(i),1,-1,0, i*24
Next
Next
i=0
WaitKey
While i<240+p#
UpdateWorld
i=i+1
Wend
EndIf
If KeyHit(200) Then
p#=AnimTime#(track(1))
For i=1 To Max
For t.track=Each track
Animate t\obj,1,1,0, i*24
Next
Animate track2(i),1,1,0, i*24
Next
i=0
WaitKey
While i<240+p#
UpdateWorld
i=i+1
Wend
EndIf
RenderWorld tween
Flip
Forever
Next
|