forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   RTS (http://forum.boolean.name/showthread.php?t=14214)

}{@KeR 10.02.2011 18:10

RTS
 
Вот у мя примерчик
PHP код:

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

Global Ramkax1
Global Ramkay1


Repeat
Cls 

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
Else
        
Ramkax1=MouseX()
        
Ramkay1=MouseY()
EndIf 
End Function 

Как сделать проверку НАХОДИТСЯ ОБЪЕКТ ВНУТРИ РАМКИ ИЛИ НЕТ???

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 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, тогда уже проходить по всем кубам на проекциию

}{@KeR 10.02.2011 18:37

Ответ: RTS
 
УУУхты спасибо огромное!!!!!!


Часовой пояс GMT +4, время: 11:08.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot