|
3D-программирование Вопросы, касающиеся программирования 3D мира |
19.01.2007, 10:44
|
#31
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Re: Гусеница
Сообщение от HolyDel
2SBJoker: анимация текстуры и ее скролл -несколько разные вещи, имхо.
|
Про анимацию ты первым заговорил, причём недогнал и привёл жуткий пример на основе анимированных имаджей. О чём речь вообще нешла.
Во вторых:
animation
сущ.
1) анимация ( мультипликация)
2) воодушевление; живость; вдохновение, оживление
В текущем разговоре это слово использовалось во втором значении, а именно "оживить", заставить двигаться текстуру,т.е. анимировать. А не использовать предварительно анимированую последовательность картинок.
__________________
|
(Offline)
|
|
20.01.2007, 02:50
|
#32
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Гусеница
2SBJoker. Ok.
2Fant если кроме танка ничего больше анимированного в сцене нету, то легче всего изменять параметр UpdateWorld.
т.е. должно быть примерно так UpdateWorld(spd*f), где spd - скорость танка, а f - фактор, который подбирается экспериментально.
|
(Offline)
|
|
20.01.2007, 23:10
|
#33
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Гусеница
Короче фишка такая. Я не могу удалить пробелом все элементы. То есть я понимаю из-за чего ошибка, но не знаю как ее можно обойти. Пробел - удаление.
Подкажите что можно сделать?
Graphics3D 640,480,16,2
Const UPS=60
Const Max=10; - number of trackS
Type tank1
Field xPosition#
Field yPosition#
Field zPosition#
Field obj
End Type
Dim cube (Max);track
Dim cube2(Max);track
Global speed#=0
Global ok=0
Global ok1=True
kdown=KeyDown(200)
;Cam & light
camera=CreateCamera()
CameraClsColor camera,0,0,255
PositionEntity camera,0,10,0
CameraRange camera,1,20
RotateEntity camera ,90,0,0
l=CreateLight()
RotateEntity l,45,0,0
;ground=CreateCube()
;PositionEntity ground,0,-1,0
;ScaleMesh ground,15,1,15
;EntityColor ground,128,128,192
;tankModel=CreateCube()
t1.tank1=New tank1
;Create details of tank
tank1=CreateCube()
ScaleMesh tank1,1,.1,.5
PositionEntity tank1,0,0,0
tower=CreateSphere(4, tank1)
ScaleMesh tower,.3,.3,.3
PositionMesh tower,0,.2,0
wheel1=CreateCube( tank1)
ScaleMesh wheel1,.5,.05,.05
PositionMesh wheel1,0,0,.6
wheel2=CreateCube(tank1)
ScaleMesh wheel2,.5,.05,.05
PositionMesh wheel2,0,0,-.6
cannon=CreateCylinder(6,tower)
ScaleMesh cannon,.1,.5,.1
RotateMesh cannon,0,0,100
PositionMesh cannon,.6,.4,0
;Original cube. It makes tracks
cube(0)=CreateCube()
ScaleEntity cube(0),.025,.025,.025
HideEntity cube(0)
;animated track
For i = 1 To Max
cube(i) = CopyEntity(cube(0))
cube2(i) = CopyEntity(cube(0))
EntityParent cube(i), tank1
EntityParent cube2(i), tank1
RotateEntity cube(i),0,0,0
PositionEntity cube(i),-1,-.25,.6
SetAnimKey cube(i),0
RotateEntity cube(i),0,0,0
PositionEntity cube(i),-1,.25,.6
SetAnimKey cube(i),60
RotateEntity cube(i),0,0,0
PositionEntity cube(i),1,.25,.6
SetAnimKey cube(i),120
RotateEntity cube(i),0,0,0
PositionEntity cube(i),1,-.25,.6
SetAnimKey cube(i),180
RotateEntity cube(i),0,0,0
PositionEntity cube(i),-1,-.25,.6
SetAnimKey cube(i),240
RotateEntity cube2(i),0,0,0
PositionEntity cube2(i),-1,-.25,-.6
SetAnimKey cube2(i),0
RotateEntity cube2(i),0,0,0
PositionEntity cube2(i),-1,.25,-.6
SetAnimKey cube2(i),60
RotateEntity cube2(i),0,0,0
PositionEntity cube2(i),1,.25,-.6
SetAnimKey cube2(i),120
RotateEntity cube2(i),0,0,0
PositionEntity cube2(i),1,-.25,-.6
SetAnimKey cube2(i),180
RotateEntity cube2(i),0,0,0
PositionEntity cube2(i),-1,0,-.6
SetAnimKey cube2(i),240
Next
For i=1 To Max
AddAnimSeq cube(i),240
AddAnimSeq cube2(i),240
Next
For i=1 To Max
Animate cube(i),1,1,0, i*24
Animate cube2(i),1,1,0, i*24
Next
i=0
While i<240
UpdateWorld
i=i+1
Wend
;Color set
black_br=CreateBrush(0,0,0)
PaintMesh tank1,black_br
white_br=CreateBrush(255,255,255)
PaintMesh tower,white_br
grey_br=CreateBrush(119,136,122)
PaintMesh cannon,grey_br
orange_br=CreateBrush(226,118,29)
PaintMesh wheel1,orange_br
PaintMesh wheel2,orange_br
rose_br=CreateBrush(214,58,218)
PaintMesh tower,rose_br
;addMeshes (details of tank)
AddMesh tower, tank1
AddMesh wheel1, tank1
AddMesh wheel2, tank1
AddMesh cannon, tank1
FreeEntity tower
FreeEntity wheel1
FreeEntity wheel2
FreeEntity cannon
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(57)
FreeEntity cube(0)
For i=1 To max
HideEntity cube(i)
HideEntity cube2(i)
Next
FreeEntity tank1
End If
If Not KeyDown(200)
For i=1 To Max
Local p#=AnimTime#(cube(i))
SetAnimTime cube(i),p#
p#=AnimTime#(cube2(i))
SetAnimTime cube2(i),p#
Next
EndIf
If KeyHit(200) Then
p#=AnimTime#(cube(1))
For i=1 To Max
Animate cube(i),1,1,0, i*24
Animate cube2(i),1,1,0, i*24
Next
i=0
WaitKey
While i<240+p#
UpdateWorld
i=i+1
Wend
EndIf
For t1.tank1=Each tank1
If KeyDown(203) Then TurnEntity tank1,0,3,0
If KeyDown(205) Then TurnEntity tank1,0,-3,0
If KeyDown(200) Then MoveEntity tank1,.1,0,0
If KeyDown(208) Then MoveEntity tank1,-.1,0,0
Next
If KeyHit(1) End
UpdateWorld
Next
RenderWorld tween
Flip
Forever
|
(Offline)
|
|
21.01.2007, 01:13
|
#34
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Гусеница
лучше - бы весь код в студию.
а так сильно имхо:
if keydown(57)
for t.tank1=each tank1
freeentity t\obj ; удаляем модель
delete t
next
endif
|
(Offline)
|
|
21.01.2007, 14:30
|
#35
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Гусеница
2HolyDel но вообще-то код, который я выложил и есть - весь
И так не работает) посмотри в чем там ошибка! Вернее ясно в чем она, вопрос как ее избежать!?
|
(Offline)
|
|
22.01.2007, 02:28
|
#36
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Гусеница
Fant, а что вообще надо? просто удалить танк?
выйди за цикл и удали его. или проверяй на удаленность, если удален танк то никакие операции не должны над ним производиться.
вот рабочий пример:
Graphics3D 640,480,16,2
Const UPS=30
Const Max=10; - number of trackS
Type tank1
Field xPosition#
Field yPosition#
Field zPosition#
Field obj
End Type
Dim cube (Max);track
Dim cube2(Max);track
Global speed#=0
Global ok=0
Global ok1=True
kdown=KeyDown(200)
;Cam & light
camera=CreateCamera()
CameraClsColor camera,0,0,255
PositionEntity camera,0,10,0
CameraRange camera,1,20
RotateEntity camera ,90,0,0
l=CreateLight()
RotateEntity l,45,0,0
;ground=CreateCube()
;PositionEntity ground,0,-1,0
;ScaleMesh ground,15,1,15
;EntityColor ground,128,128,192
;tankModel=CreateCube()
t1.tank1=New tank1
;Create details of tank
tank1=CreateCube()
ScaleMesh tank1,1,.1,.5
PositionEntity tank1,0,0,0
tower=CreateSphere(4, tank1)
ScaleMesh tower,.3,.3,.3
PositionMesh tower,0,.2,0
wheel1=CreateCube( tank1)
ScaleMesh wheel1,.5,.05,.05
PositionMesh wheel1,0,0,.6
wheel2=CreateCube(tank1)
ScaleMesh wheel2,.5,.05,.05
PositionMesh wheel2,0,0,-.6
cannon=CreateCylinder(6,tower)
ScaleMesh cannon,.1,.5,.1
RotateMesh cannon,0,0,100
PositionMesh cannon,.6,.4,0
;Original cube. It makes tracks
cube(0)=CreateCube()
ScaleEntity cube(0),.025,.025,.025
HideEntity cube(0)
;animated track
For i = 1 To Max
cube(i) = CopyEntity(cube(0))
cube2(i) = CopyEntity(cube(0))
EntityParent cube(i), tank1
EntityParent cube2(i), tank1
RotateEntity cube(i),0,0,0
PositionEntity cube(i),-1,-.25,.6
SetAnimKey cube(i),0
RotateEntity cube(i),0,0,0
PositionEntity cube(i),-1,.25,.6
SetAnimKey cube(i),60
RotateEntity cube(i),0,0,0
PositionEntity cube(i),1,.25,.6
SetAnimKey cube(i),120
RotateEntity cube(i),0,0,0
PositionEntity cube(i),1,-.25,.6
SetAnimKey cube(i),180
RotateEntity cube(i),0,0,0
PositionEntity cube(i),-1,-.25,.6
SetAnimKey cube(i),240
RotateEntity cube2(i),0,0,0
PositionEntity cube2(i),-1,-.25,-.6
SetAnimKey cube2(i),0
RotateEntity cube2(i),0,0,0
PositionEntity cube2(i),-1,.25,-.6
SetAnimKey cube2(i),60
RotateEntity cube2(i),0,0,0
PositionEntity cube2(i),1,.25,-.6
SetAnimKey cube2(i),120
RotateEntity cube2(i),0,0,0
PositionEntity cube2(i),1,-.25,-.6
SetAnimKey cube2(i),180
RotateEntity cube2(i),0,0,0
PositionEntity cube2(i),-1,0,-.6
SetAnimKey cube2(i),240
Next
For i=1 To Max
AddAnimSeq cube(i),240
AddAnimSeq cube2(i),240
Next
For i=1 To Max
Animate cube(i),1,1,0, i*24
Animate cube2(i),1,1,0, i*24
Next
i=0
While i<240
UpdateWorld
i=i+1
Wend
;Color set
black_br=CreateBrush(0,0,0)
PaintMesh tank1,black_br
white_br=CreateBrush(255,255,255)
PaintMesh tower,white_br
grey_br=CreateBrush(119,136,122)
PaintMesh cannon,grey_br
orange_br=CreateBrush(226,118,29)
PaintMesh wheel1,orange_br
PaintMesh wheel2,orange_br
rose_br=CreateBrush(214,58,218)
PaintMesh tower,rose_br
;addMeshes (details of tank)
AddMesh tower, tank1
AddMesh wheel1, tank1
AddMesh wheel2, tank1
AddMesh cannon, tank1
FreeEntity tower
FreeEntity wheel1
FreeEntity wheel2
FreeEntity cannon
period=1000/UPS
time=MilliSecs()-period
is_tank=1
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(57)
FreeEntity cube(0)
For i=1 To max
HideEntity cube(i)
HideEntity cube2(i)
Next
FreeEntity tank1
is_tank=0
End If
If is_tank
If Not KeyDown(200)
For i=1 To Max
Local p#=AnimTime#(cube(i))
SetAnimTime cube(i),p#
p#=AnimTime#(cube2(i))
SetAnimTime cube2(i),p#
Next
EndIf
If KeyHit(200) Then
p#=AnimTime#(cube(1))
For i=1 To Max
Animate cube(i),1,1,0, i*24
Animate cube2(i),1,1,0, i*24
Next
i=0
WaitKey
While i<240+p#
UpdateWorld
i=i+1
Wend
EndIf
For t1.tank1=Each tank1
If KeyDown(203) Then TurnEntity tank1,0,3,0
If KeyDown(205) Then TurnEntity tank1,0,-3,0
If KeyDown(200) Then MoveEntity tank1,.1,0,0
If KeyDown(208) Then MoveEntity tank1,-.1,0,0
Next
EndIf
If KeyHit(1) End
UpdateWorld
Next
RenderWorld tween
Flip
Forever
P.S. Извиняй что не заметил что код весь.
|
(Offline)
|
|
22.01.2007, 16:59
|
#37
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Гусеница
2HolyDel спасибо! Теперь я понял как все удалить!
|
(Offline)
|
|
25.01.2007, 21:22
|
#38
|
Бывалый
Регистрация: 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)
|
|
27.01.2007, 11:43
|
#39
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Гусеница
Форум благополучно спит?
Я пытался сделать так, как нужно, но просто я не до конца понял, как это реализовать!
|
(Offline)
|
|
27.01.2007, 17:38
|
#40
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Re: Гусеница
Сравни две строки:
Field obj[10]
и любую из последующих, например:
t\obj = CopyEntity(track(0))
"Ти всё-таки дапусирь маренький асибка!"(с)
Иначе говоря, всё, что ниже камента "animated track"- неправильно.
Теперь думай.
|
(Offline)
|
|
28.01.2007, 12:34
|
#41
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Гусеница
Сообщение от Diplomat
Сравни две строки:
Field obj[10]
и любую из последующих, например:
t\obj = CopyEntity(track(0))
"Ти всё-таки дапусирь маренький асибка!"(с)
Иначе говоря, всё, что ниже камента "animated track"- неправильно.
Теперь думай.
|
Попробую подумать, но то, что там ошибка я, конечно и сам догадался. Догадался весьма легко: программка не запускалась.
|
(Offline)
|
|
28.01.2007, 13:22
|
#42
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Re: Гусеница
Сразу видно, что вначале у тебя в поле типа одномерный массив obj[10], а потом- почему-то простая переменная obj.
Естественно, такой кандибобер не будет работать.
И первый цикл, кстати, делает не 10 траков для одной гусеницы, а пытается клепать 10 гусениц с одним траком каждая.
Всё. Знаю, конечно, что поначалу вьехать очень трудно, но больше подсказывать не буду. Иначе трудно будет определить, понял ты, или списал. А это надо понять самому.
Думай.
|
(Offline)
|
|
28.01.2007, 20:10
|
#43
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Гусеница
[code]
Type track
Field obj[10]
End Type
t.track=New track
For t.track=Each track
t\obj[10]=CreateCube()
ScaleEntity t\obj[10],.025,.025,.025
PositionEntity t\obj[10],.1*.2,0,0
Next
[\code]
Я так создаю 10 кубиков или 1 кубик? - оказывается что 1
А как мне через positionEntity это проверить? так i*20
Мне нужно создать 10 кубиков через тип а потом из анимировать. Я иду правильным путем? - ну та это никак не могу сообразить((((((
|
(Offline)
|
|
28.01.2007, 21:05
|
#44
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Re: Гусеница
Конечно, ты создаешь один кубик. А как иначе?
Вот смотри, если отвлечься от типов вообще, и рассматривать поля типов как простые переменные и массивы (коими они и являются), то всё становится намного проще:
1. Ты создал массив на 11 элементов: Field obj[10].
2. Ты присвоил 10-му элементу массива хендл свежесозданного куба: t\obj[10]=CreateCube()
3. Ну и всё. Других 10 кубов ты нигде не создаешь. Т.е. цикла по элементам массива в твоем коде нет как нет.
А без цикла ты не заполнишь 10 элементов массива. Ферштейн?
[blitz]For n=0 to 10
t\obj[n]=CreateCube()
Next[/blitz]
Или грубо говоря
[blitz]t\obj[0]=CreateCube()
t\obj[1]=CreateCube()
t\obj[2]=CreateCube()
;...
t\obj[8]=CreateCube()
t\obj[9]=CreateCube()
t\obj[10]=CreateCube()[/blitz]
Вот.
Мне нужно создать 10 кубиков через тип а потом из анимировать. Я иду правильным путем?
|
Если не вдаваться в жЫзненный и популярный среди юзверей вопрос "а зачем тебе вообще создавать 10 кубиков через тип и анимировать их вручную?!!", то можно предположить, что идешь ты правильным путем, но идешь не понимая его сути.
Это не беда, я, к примеру, когда был юн и учил БЕЙСИК-МСХ, тоже не сразу понял, что такое ветвления, экспотенциальная форма числа привела меня в замешательство, массивы- в ступор (чем, чйорт подйери, они отличаются от обычных переменных?!! ), сабрутины показались редкостно ужасным изобретением, а из всех операторов цикла я выбрал оператор безусловного перехода, который тогда именовался еще раздельно: "Go To"...
Так что давай, учись.
|
(Offline)
|
|
28.01.2007, 21:15
|
#45
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Гусеница
ТОка хотел написать! Я все сделал, кроме в скобках...[n]
Graphics3D 640,480,16,2
Type track
Field obj
End Type
;Ñîçäàåì îðèãèíàëüíû êóá
OriginalTrack=CreateCube()
ScaleEntity OriginalTrack,.025,.025,.025
HideEntity OriginalTrack
For a=0 To 9;äåëàåì 10 êóáèêîâ, êîòîðûå íóæíî ðàññòàâèòü ïî-÷åëîâå÷åñêè
t.track=New track
t\obj=CopyEntity (originalTrack)
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
AddAnimSeq t\obj,240
Animate t\obj,1,1,0, i*24
Next
Const UPS=60
cam=CreateCamera()
RotateEntity cam,0,0,0
PositionEntity cam,0,0,-1
l=CreateLight()
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
RenderWorld tween
Flip
Forever
Ну только расположить не могу (впрочем как и раньше). Они у меня все в одной точке начинаются! Понимаешь?
А теперь покажу, если сделать по-твоему. мне кажется оба варианта эквиваленты, но как же их расположить в форме прямоугольника! Вот в этом и загвоздка!
Graphics3D 640,480,16,2
Type track
Field obj[10]
End Type
;Ñîçäàåì îðèãèíàëüíû êóá
OriginalTrack=CreateCube()
ScaleEntity OriginalTrack,.025,.025,.025
HideEntity OriginalTrack
For a=0 To 9;äåëàåì 10 êóáèêîâ, êîòîðûå íóæíî ðàññòàâèòü ïî-÷åëîâå÷åñêè
t.track=New track
t\obj[a]=CopyEntity (originalTrack)
RotateEntity t\obj[a],0,0,0
PositionEntity t\obj[a],-1,-.25,.6
SetAnimKey t\obj[a],0
RotateEntity t\obj[a],0,0,0
PositionEntity t\obj[a],-1,.25,.6
SetAnimKey t\obj[a],60
RotateEntity t\obj[a],0,0,0
PositionEntity t\obj[a],1,.25,.6
SetAnimKey t\obj[a],120
RotateEntity t\obj[a],0,0,0
PositionEntity t\obj[a],1,-.25,.6
SetAnimKey t\obj[a],180
RotateEntity t\obj[a],0,0,0
PositionEntity t\obj[a],-1,-.25,.6
SetAnimKey t\obj[a],240
AddAnimSeq t\obj[a],240
Animate t\obj[a],1,1,0, i*24
Next
Const UPS=60
cam=CreateCamera()
RotateEntity cam,0,0,0
PositionEntity cam,0,0,-1
l=CreateLight()
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
RenderWorld tween
Flip
Forever
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:01.
|