Тема: RTS
Показать сообщение отдельно
Старый 10.02.2011, 18:33   #2
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: RTS

Graphics3D 1024,768,32,2
SetBuffer BackBuffer
()
c=CreateCamera()
Global 
cub=CreateCube()
MoveEntity cub,0,0,10

Global CubSelect
Global Ramkax1Ramkay1,Ramkax2Ramkay2

Repeat
    Cls 
    
    CameraProject
(c,EntityX(cub),EntityY(cub),EntityZ(cub)) ; определяем 2д проекцию из 3д
    
    RenderWorld
()
    
Ramka()
    
Flip()
Until KeyHit(1)
End 

Function Ramka()
    If 
MouseHit(1Then 
        Ramkax1
=MouseX()
        
Ramkay1=MouseY()
    EndIf 
    If 
MouseDown(1Then
        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, тогда уже проходить по всем кубам на проекциию
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо LLI.T.A.L.K.E.R. за это полезное сообщение:
MOrtAl44444 (10.02.2011), }{@KeR (10.02.2011)