Тема: Гусеница
Показать сообщение отдельно
Старый 25.01.2007, 21:22   #38
Fant
Бывалый
 
Регистрация: 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
(Offline)
 
Ответить с цитированием