LLI.T.A.L.K.E.R. |
10.02.2011 18:33 |
Ответ: RTS
PHP код:
Graphics3D 1024,768,32,2 SetBuffer BackBuffer() c=CreateCamera() Global cub=CreateCube() MoveEntity cub,0,0,10
Global CubSelect Global Ramkax1, Ramkay1,Ramkax2, Ramkay2
Repeat Cls CameraProject(c,EntityX(cub),EntityY(cub),EntityZ(cub)) ; определяем 2д проекцию из 3д RenderWorld() Ramka() Flip() Until KeyHit(1) End
Function Ramka() If MouseHit(1) Then Ramkax1=MouseX() Ramkay1=MouseY() EndIf If MouseDown(1) Then Color 20,200,20 Ramkax2=MouseX() Ramkay2=MouseY() Line Ramkax1,Ramkay1,Ramkax2,Ramkay1 Line Ramkax1,Ramkay2,Ramkax2,Ramkay2 Line Ramkax1,Ramkay1,Ramkax1,Ramkay2 Line Ramkax2,Ramkay1,Ramkax2,Ramkay2 If Ramkax1>Ramkax2 Then Ram1x=Ramkax1 Ram2x=Ramkax2 Else Ram1x=Ramkax2 Ram2x=Ramkax1 EndIf If Ramkay1>Ramkay2 Then Ram1y=Ramkay1 Ram2y=Ramkay2 Else Ram1y=Ramkay2 Ram2y=Ramkay1 EndIf Text ProjectedX(),ProjectedY(),"# KY6" ; центр куба в 2д If (ProjectedX()<Ram1x And ProjectedX()>Ram2x) EntityColor cub,255,200,200 CubSelect=True Else EntityColor cub,255,255,255 CubSelect=False EndIf Else Ramkax1=MouseX() Ramkay1=MouseY() If CubSelect=True EntityColor cub,255,100,100 Else EntityColor cub,255,255,255 EndIf EndIf End Function
о какой либо оптимизации и красоте кода особо не морочился..
так же тут пример на cub. А если их много будет по Type, тогда уже проходить по всем кубам на проекциию
|