Тема: КАМЕРЫ
Показать сообщение отдельно
Старый 09.12.2005, 10:46   #1
Akima
Бывалый
 
Регистрация: 22.10.2005
Сообщений: 701
Написано 7 полезных сообщений
(для 5 пользователей)
Здравстуйте товарищи трудящиеся
Объявляется общий сбор, цель которого помощь в
испровлении ошибок описанного ниже кода.
теперь серьезно:
Помогите с прогой пишу ее для тестирования тура,
чтобы с разных видов смотреть и выявлять ошибки в туре
но как видете ,если уже посмотрели, не очень .

Описание: один игрок двигается, а камеры других игроков
отоброжаются на экране
(код проецирования позаимствован из сампла tex_render.bb)
по типу как в играх RAINBOW SIX,

как сделать чтобы не тормозило.



Graphics3D 640,480,32,2

Global af$
af=LoadFont("arial cyr",18,True)
SetFont af


Global C_ind;номер активной камеры

;ставим объекты
Dim Obj(10)
Dim cam(10)
Global C_Count=3 ;колво объектов
For i=1 To c_count
obj(i)=CreateCube()
cam(i)=CreateCamera (obj(i))
PositionEntity obj(i),i*10,1,0
EntityColor obj(i),Rnd(255),Rnd(255),Rnd(255)
PositionEntity cam(i),0,2,-15

Next
;----------------------------------------


;нарисуем поле в клетачку
grid_tex=CreateTexture( 16,16,8,2 )
ScaleTexture grid_tex,10,10
SetBuffer TextureBuffer( grid_tex )
ClsColor 255,255,255:Cls:ClsColor 0,0,0
Color 192,192,192:Rect 0,0,8,8:Rect 8,8,8,8
SetBuffer BackBuffer()

plane=CreatePlane()
EntityTexture plane,grid_tex
;--------------------------------------

c_ind=2

While Not KeyHit(1)

;устанавливаем номер активной камеры
If KeyDown(59) c_ind=1
If KeyDown(60) c_ind=2
If KeyDown(61) c_ind=3

For i=1 To c_count;переключаем камеры
If i=c_ind ShowEntity cam(c_ind) Else HideEntity cam(i)
Next


If KeyDown( 205 )=True Then TurnEntity obj(c_ind),0,-2,0
If KeyDown( 203 )=True Then TurnEntity obj(c_ind),0,2,0
If KeyDown( 208 )=True Then MoveEntity obj(c_ind),0,0,-0.5
If KeyDown( 200 )=True Then MoveEntity obj(c_ind),0,0,0.5


ScreenCamera c_ind,3,340,0
UpdateWorld
RenderWorld



Text 20,20,c_ind,True,True


Text 320,400,"F1~F3 - переключение между объектами",True,True
Text 320,430,"стрелки - движение",True,True
Flip
Wend
End



Function ScreenCamera(ind,plan_cam,xc,yc)
;Описание: ind -активная камера
; plan_cam- номер камеры которая ваводится о окне
; xc,yc -позиция окна
;

texture=CreateImage( 640,480)

;UpdateWorld
;RenderWorld

HideEntity cam(ind)
ShowEntity cam(plan_cam)
UpdateWorld
RenderWorld
CopyRect 0,0,640,480,0,0,0,ImageBuffer( texture )
ResizeImage texture ,180,120
Cls
ShowEntity cam(ind)
HideEntity cam(plan_cam)

DrawImage texture,xc,yc
Flip

End Function
(Offline)
 
Ответить с цитированием