forum.boolean.name

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

}{@KeR 17.02.2011 19:40

Управление камерой:
 
PHP код:

Graphics3D 1024,768,32,2
SetBuffer BackBuffer
()

l=CreateLight()
c=CreateCamera()
TurnEntity c,45,0,0
MoveEntity c
,0,100,0
CreateWorld
()

Repeat
If KeyDown(30Then MoveEntity c,-1,0,0
If KeyDown(32Then MoveEntity c,1,0,0
If KeyDown(31Then MoveEntity c,0,0,-1
If KeyDown(17Then MoveEntity c,0,0,


RenderWorld
()
Flip()
Until KeyHit(1)
End 

Function CreateWorld()
        
wtex=CreateTexture(256,256)
        
SetBuffer TextureBuffer(wtex)
        
Color 10,100,10
        Rect  15
,15,226,226
        SetBuffer BackBuffer
()
        
ScaleTexture wtex,10,10
        plane
=CreatePlane()
        
EntityTexture plane,wtex
        EntityType plane
,poltype
        EntityPickMode plane
,2,1
        FreeTexture wtex
End 
Function 

Видите TurnEntity c,45,0,0
Когда камера наклонена на х=45 то если нажать клавишу W(вперёд) то камера летит под plain ....как сделать чтобы она летала ровно....словно без TurnEntity

EvilChaotic 17.02.2011 19:46

Ответ: Управление камерой:
 
TranslateEntity.

}{@KeR 17.02.2011 20:11

Ответ: Управление камерой:
 
Ещё пару вопросиков

1.как теперь также реализовать с поворотом камеры влево и вправо?
2.Как на колёсик мышки приближать и отдалять?

}{@KeR 17.02.2011 20:33

Ответ: Управление камерой:
 
Вот сделал что объект выделяется рамкой и куда нажмёшь(ПКМ) туда и двигается.....если (ЛКМ) то сбрасывается
но всёравно как-то коряво.....помогите пожалуйста
Например если рамка проходит центр куба то он всёравно выделяется


PHP код:

Graphics3D 1024,768,32,2


CreateWorld
()

Global 
movepiv
Global centpiv
Global campiv
Global camera
Global mic
Global speed#
Global deltaT
Global userTime
Global newTime
Global wLog

Global f_key=17
Global b_key=31
Global l_key=30
Global r_key=32

Global CubSelect 
Global Ramkax1Ramkay1,Ramkax2Ramkay2

Const  playertype=1,poltype=2

CreatePlayer
(600,3,-600)

cub=CreateCube()
ScaleEntity cub,2,4,2
;CameraProject(camera,EntityX(cub),EntityY(cub),EntityZ(cub))



Repeat

        dvigok
()
        
        
PositionEntity cub,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1)
        
RotateEntity cub,0,EntityYaw(movepiv,1),0
         
        
;mouselook(camera)               
        
UpdateWorld()
        
RenderWorld()
        
Ramka()
        
Flip()
        
Until KeyHit(1)=1
End

Function CreateWorld()
        
wtex=CreateTexture(256,256)
        
SetBuffer TextureBuffer(wtex)
        
Color 10,100,10
        Rect  15
,15,226,226
        SetBuffer BackBuffer
()
        
ScaleTexture wtex,10,10
        plane
=CreatePlane()
        
EntityTexture plane,wtex
        EntityType plane
,poltype
        EntityPickMode plane
,2,1
        FreeTexture wtex
End 
Function

Function 
CreatePlayer(x#=0,y#=0,z#=0)
        
movepiv=CreatePivot() 
        
PositionEntity movepiv,x#,y#+4,z# 
        
EntityRadius movepiv,3,4.5 
        EntityType movepiv
,playertype 
        centpiv
=CreatePivot() 
        
PositionEntity centpiv,x#+4,y#+2,z#+4  
        
camera=CreateCamera() 
        
PositionEntity camera,600,100,-670 
        TurnEntity camera
,45,0,0,
        CameraClsColor camera
,10,10,150 
        mic
=CreateListener(camera,0.05,0.05,0.08
        
Collisions playertype,poltype,2,
End 
Function

Function 
dvigok()
        ;
PositionEntity campiv,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1) 
        
If KeyHit(60Then wLog=Not wLog Wireframe wLog 
        
If userTime=0 userTime=MilliSecs() 
        
newTime=MilliSecs()  
        
deltaT=newTime-userTime 
        userTime
=newTime 
        speed
#=0.04*deltaT
 
        
If KeyDown(f_keyThen 
                TranslateEntity camera
,0,0,speed
        
Else 
                If 
KeyDown(b_keyThen TranslateEntity camera,0,0,-speed#
        
EndIf 
        If 
KeyDown(l_keyThen 
                TranslateEntity camera
,-speed#,0,0 
        
Else
                If 
KeyDown(r_keyThen TranslateEntity camera,speed#,0,0 
        
EndIf
  
         
        
CameraPick camera,MouseX(),MouseY() 
        
                ;If 
MouseHit(2)=1 Then 
                
;        PositionEntity centpiv,PickedX#(),PickedY#()+2,PickedZ#()  
                
;EndIf 
        
        If 
EntityDistance(movepiv,centpiv)>3 Then 
                PointEntity movepiv
,centpiv 
                MoveEntity movepiv
,0,0,speed
        
EndIf 
        
TranslateEntity movepiv,0,-1,
End 
Function

Function 
Ramka() 
    If 
MouseHit(1Then  
        Ramkax1
=MouseX() 
        
Ramkay1=MouseY() 
    EndIf  
    If 
MouseDown(1Then 
        Color 0
,200,
        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  
         
        If (
GraphicsWidth()*0.5<Ram1x And GraphicsWidth()/0.5>Ram2x)
           ; 
EntityAlpha cub,1
            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
        
        If 
CubSelect=True Then 
           
If MouseHit(2)=1 Then 
                PositionEntity centpiv
,PickedX#(),PickedY#()+2,PickedZ#()  
           
EndIf 
        EndIf                   
End Function 

Ещё вот: (Что не так?)
PHP код:

If MouseZSpeed()=1 Then
MoveEntity camera
,0,0,3
ElseIf MouseZSpeed()=-1 Then
MoveEntity camera
,0,0,-3
EndIf 


mr.DIMAS 17.02.2011 23:11

Ответ: Управление камерой:
 
1. создаешь ПИВОТ, привязываешь камеру к нему, наклоняешь камеру на нужный угол, распологаешь на нужной высоте. когда нужно повернуть камеру - крутиш пивот.
2. Двигаешь КАМЕРУ по оси Z. MouseZSpeed в помощь

+ почитай книгу Роберта Мартина "Чистый код"

Leowey 18.02.2011 01:26

Ответ: Управление камерой:
 
mr.DIMAS, золотые слова...


}{@KeR, на заметку: Если ты собираешься использовать в своём проекте физикс, то тебе потребуется физическая - капсульная модель игрока.
На, кури! http://forum.boolean.name/showthread...566#post105566

}{@KeR 18.02.2011 12:52

Ответ: Управление камерой:
 
Если что , то свой вопрос я всё время обновляю

}{@KeR 18.02.2011 15:47

Ответ: Управление камерой:
 
Как сделать чтобы Image всегда было радо с объектом??

Nex 18.02.2011 17:05

Ответ: Управление камерой:
 
Как то так
Цитата:

CameraProject camera,EntityX (entity),EntityY (entity),EntityZ (entity)
DrawImage image,ProjectedX (),ProjectedZ ()

mr.DIMAS 18.02.2011 17:23

Ответ: Управление камерой:
 
только не так!!! это тормозно( Юниты -> UP. FPS -> DOWN ) . загружаешь image как текстуру, создаешь квад ( или спрайт ), привязываешь к объекту, натягиваешь текстуру. если квад - то юзай PointEntity. Если спрайт - он сам поворачивается к камере )). В общем, лучше 2д графику блица сразу в топку отправить - уж очень медленная. Лучше квадами с текстурами

}{@KeR 18.02.2011 19:14

Ответ: Управление камерой:
 
Я просто хочу выбирать объекты рамкой через ImagesCollide....больше у мя ни как неполучается выбирать

mr.DIMAS 18.02.2011 19:30

Ответ: Управление камерой:
 
оу щит, порой по форуму. тем таких поднималось много. сам выделение рамкой не делал - по-этому ничего сказать не могу

}{@KeR 18.02.2011 19:33

Ответ: Управление камерой:
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 179403)
оу щит, порой по форуму. тем таких поднималось много. сам выделение рамкой не делал - по-этому ничего сказать не могу

Искал уже.....точто надо не нашёл
Всёравно спасибо :)

Alex_Noc 18.02.2011 22:35

Ответ: Управление камерой:
 
нууу, может я смогу помоч теоретикой %) , кароч:
Как тебе нужно выделение чтоб рисовалось? На экране квадрат вид спереди или на поверхности в перспективе?

}{@KeR 19.02.2011 07:49

Ответ: Управление камерой:
 
Цитата:

Сообщение от Alex_Noc (Сообщение 179422)
нууу, может я смогу помоч теоретикой %) , кароч:
Как тебе нужно выделение чтоб рисовалось? На экране квадрат вид спереди или на поверхности в перспективе?

1.Мне нужно выделить объект(юнит)-рамкой
2.потом чтобы нажать куда-нить на свободном месте от объект и сам этот объект деактивировался

Короче так....как в стратегиях бывает!!!!!!!!!!!!!!!

}{@KeR 19.02.2011 11:30

Ответ: Управление камерой:
 
Почуму кубик не двигается???

PHP код:

Graphics3D 1024,768,32,2
SetBuffer BackBuffer
()

;
///////// Type ///////
Type unit
    Field ent
,sel
End Type

Global movepiv
Global celpiv
Global cam
Global pick
;////////End Type ///////

cam=CreateCamera()
PositionEntity cam,0,60,0
RotateEntity cam
,60,0,0
p
=CreatePlane()
EntityColor p,0,128,0


CreatePlayer
(-50,3,65)

Local ox#,oy#,cx#,cy#,tx#,ty#
While Not KeyDown(1)

Dvijenie()

    If 
MouseX()<5 Then TranslateEntity cam,-0.5,0,0
    
If MouseX()>1020 Then TranslateEntity cam,0.5,0,0
    
If MouseY()<5 Then TranslateEntity cam,0,0,0.5
    
If MouseY()>766 Then TranslateEntity cam,0,0,-0.5
    
    
For u.unit=Each unit
        
If u\sel=1 Then EntityColor u\ent,255,255,Else EntityColor u\ent,0,0,120
    Next
    RenderWorld
    
    
If MouseDown(1)
        
cx#=MouseX()
        
cy#=MouseY()
        
        
If ox>cx Then minx=cx:maxx=ox Else minx=ox:maxx=cx
        
If oy>cy Then miny=cy:maxy=oy Else miny=oy:maxy=cy
        
        Rect minx
,miny,maxx-minx,maxy-miny,0
        
For u.unit=Each unit
            CameraProject
(cam,EntityX(u\ent),EntityY(u\ent),EntityZ(u\ent))
            If 
ProjectedX()>minx And ProjectedX()<maxx And ProjectedY()>miny And ProjectedY()<maxy Then u\sel=Else u\sel=0
        Next
        
Else
        
ox#=MouseX()
        
oy#=MouseY()
    
EndIf
    
    
Oval MouseX()-3,MouseY()-3,5,5,0
    Flip
Wend
End 


Function CreatePlayer(x#=0,y#=0,z#=0)

    
u.unit=New unit
    u
\ent=CreateCube()
    
PositionEntity u\ent,x#,y#,z#
    
u\sel=0

        movepiv
=CreatePivot() 
        
PositionEntity movepiv,x#,y#+4,z# 
          
        
celpiv=CreatePivot() 
        
PositionEntity celpiv,x#+4,y#+2,z#+4  
  
End Function

Function 
Dvijenie()

pick=CameraPick(cam,MouseX(),MouseY()) 
For 
u.unit=Each unit
    
If u\sel=1 Then 
       
If MouseHit(2)=1 Then 
          PositionEntity celpiv
,PickedX#(),PickedY#()+2,PickedZ#()  
       
EndIf 
    EndIf 
Next 
 

If EntityDistance(movepiv,celpiv)>3 Then 
                PointEntity movepiv
,celpiv 
                MoveEntity movepiv
,0,0,1
        
EndIf  
 
End Function 


mr.DIMAS 19.02.2011 15:18

Ответ: Управление камерой:
 
PHP код:

;///////// Type /////// 
Type unit 
    Field ent
,sel 
End Type 
Global movepiv 
Global celpiv 
Global cam 
Global pick 

Щито?
по идее у каждого юнита должна быть своя точка, куда идти. Т.о. имеем:
Код:


 
Global Camera = 0
Global CameraPickedEntity = 0
 
Type Unit
 Field Entity
 Field WayPoint
 Field isSelected%
End Type
 
Function MoveUnitsToTheirWaypoints()
 For U.Unit = each Unit
  PointEntity u\entity,u\waypoint
  MoveEntity u\entity,0,0,0.1
 Next
End function
 
Function SelectUnitAndMoveToPointWhereClicked()
 
 CameraPickedEntity = CameraPick( Camera, MouseX(), MouseY() )
 For u.unit = each unit
 
  if CameraPickedEntity = u\entity then
  u\isSelected = Not(u\isSelected)
  end if
 
  If u\isSelected = true then
  PositionEntity u\WayPoint, PickedX(), PickedY(), PickedZ()
  end if
 next
 
End function

И еще ОГРОМНЫЙ ВОПРОС - почему тег php режет \ ?

}{@KeR 19.02.2011 15:54

Ответ: Управление камерой:
 
А тут скажи что не так ....выделить выделяется но не передвигается

PHP код:

Graphics3D 1024,768,32,2
SetBuffer BackBuffer
()

CreateWorld()

Global 
movepiv
Global centpiv
Global campiv
Global camera
Global mic
Global speed#
Global deltaT
Global userTime
Global newTime
Global wLog

Global f_key=17
Global b_key=31
Global l_key=30
Global r_key=32

Global CubSelect 
Global Ramkax1Ramkay1,Ramkax2Ramkay2
Global pick,cub

Global ox#,oy#,cx#,cy#,tx#,ty#

Const  playertype=1,poltype=2

CreatePlayer
(0,3,0)

cub=CreateCube()
ScaleEntity cub,2,4,2
;CameraProject(camera,EntityX(cub),EntityY(cub),EntityZ(cub)) 
 

Repeat 
If MouseX()<5 Then TranslateEntity camera,-0.5,0,0
If MouseX()>1000 Then TranslateEntity camera,0.5,0,0
If MouseY()<5 Then TranslateEntity camera,0,0,0.5
If MouseY()>766 Then TranslateEntity camera,0,0,-0.5 


        dvigok
()

        
PositionEntity cub,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1)
        
RotateEntity cub,0,EntityYaw(movepiv,1),0
        
        
;mouselook(camera)               
        
UpdateWorld()
        
RenderWorld()
        
Ramka()  
If 
sel=1 Then 
        
If MouseHit(2Then 
            PositionEntity centpiv
,PickedX#(),PickedY#()+2,PickedZ#()  
        
EndIf      
EndIf

        
Flip()
        
Until KeyHit(1)=1
End

Function CreateWorld()
        
wtex=CreateTexture(256,256)
        
SetBuffer TextureBuffer(wtex)
        
Color 10,100,10
        Rect  15
,15,226,226
        SetBuffer BackBuffer
()
        
ScaleTexture wtex,10,10
        plane
=CreatePlane()
        
EntityTexture plane,wtex
        EntityType plane
,poltype
        EntityPickMode plane
,2,1
        FreeTexture wtex
End 
Function

Function 
CreatePlayer(x#=0,y#=0,z#=0)
        
movepiv=CreatePivot() 
        
PositionEntity movepiv,x#,y#+4,z# 
        
EntityRadius movepiv,3,4.5 
        EntityType movepiv
,playertype 
        centpiv
=CreatePivot() 
        
PositionEntity centpiv,x#+4,y#+2,z#+4  
        
camera=CreateCamera() 
        
PositionEntity camera,0,100,-70 
        TurnEntity camera
,45,0,0,
        CameraClsColor camera
,10,10,150 
        mic
=CreateListener(camera,0.05,0.05,0.08
        
Collisions playertype,poltype,2,
End 
Function

Function 
dvigok()
        ;
PositionEntity campiv,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1) 
        
If KeyHit(60Then wLog=Not wLog Wireframe wLog 
        
If userTime=0 userTime=MilliSecs() 
        
newTime=MilliSecs()  
        
deltaT=newTime-userTime 
        userTime
=newTime 
        speed
#=0.04*deltaT
 
        
If KeyDown(f_keyThen 
                TranslateEntity camera
,0,0,speed
        
Else 
                If 
KeyDown(b_keyThen TranslateEntity camera,0,0,-speed#
        
EndIf 
        If 
KeyDown(l_keyThen 
                TranslateEntity camera
,-speed#,0,0 
        
Else
                If 
KeyDown(r_keyThen TranslateEntity camera,speed#,0,0 
        
EndIf
  
         
        
pick=CameraPick(camera,MouseX(),MouseY()) 
        
                ;If 
MouseHit(2)=1 Then 
                
;        PositionEntity centpiv,PickedX#(),PickedY#()+2,PickedZ#()  
                
;EndIf 
        
        If 
EntityDistance(movepiv,centpiv)>3 Then 
                PointEntity movepiv
,centpiv 
                MoveEntity movepiv
,0,0,
        
EndIf 
        
TranslateEntity movepiv,0,-1,

End 
Function

Function 
Ramka() 
    If 
MouseDown(1)
        
cx#=MouseX()
        
cy#=MouseY()
        
        
If ox>cx Then minx=cx:maxx=ox Else minx=ox:maxx=cx
        
If oy>cy Then miny=cy:maxy=oy Else miny=oy:maxy=cy
        
        Rect minx
,miny,maxx-minx,maxy-miny,0
        
            CameraProject
(camera,EntityX(cub),EntityY(cub),EntityZ(cub))
            If 
ProjectedX()>minx And ProjectedX()<maxx And ProjectedY()>miny And ProjectedY()<maxy Then sel=Else sel=0
            
    
If sel=1 Then 
        EntityColor cub
,255,255,0
     
Else
        
EntityColor cub,0,0,0
    
EndIf 
    
        Else
        
ox#=MouseX()
        
oy#=MouseY()
    
EndIf
 
Oval MouseX()-3,MouseY()-3,5,5,0       
End 
Function 


mr.DIMAS 19.02.2011 16:07

Ответ: Управление камерой:
 
PHP код:

; If MouseHit(2)=1 Then  
 
;  PositionEntity centpiv,PickedX#(),PickedY#()+2,PickedZ#()   
  
;EndIf 

раскомментируй- все пашет

}{@KeR 19.02.2011 16:09

Ответ: Управление камерой:
 
Надо чтобы двигался когда выделишь рамкой

mr.DIMAS 19.02.2011 16:10

Ответ: Управление камерой:
 
чочочочочочочоччоччочо?

надо условие ставить
If Sel = 1 then
тыры-пыры

}{@KeR 19.02.2011 16:11

Ответ: Управление камерой:
 
Ну не пашет почему-то

mr.DIMAS 19.02.2011 16:13

Ответ: Управление камерой:
 
щас пороюсь в навозе. может решу "проблему"

mr.DIMAS 19.02.2011 16:16

Ответ: Управление камерой:
 
PHP код:

Graphics3D 1024,768,32,
SetBuffer BackBuffer
() 
CreateWorld() 
Global 
movepiv 
Global centpiv 
Global campiv 
Global camera 
Global mic 
Global speed
Global deltaT 
Global userTime 
Global newTime 
Global wLog 
Global f_key=17 
Global b_key=31 
Global l_key=30 
Global r_key=32 
Global CubSelect 0
Global Ramkax1Ramkay1,Ramkax2Ramkay2 
Global pick,cub 
Global ox#,oy#,cx#,cy#,tx#,ty# 
Const  playertype=1,poltype=
CreatePlayer
(0,3,0
cub=CreateCube() 
ScaleEntity cub,2,4,
;CameraProject(camera,EntityX(cub),EntityY(cub),EntityZ(cub))  
 
Repeat  
 
If MouseX()<5 Then TranslateEntity camera,-0.5,0,
 
If MouseX()>1000 Then TranslateEntity camera,0.5,0,
 
If MouseY()<5 Then TranslateEntity camera,0,0,0.5 
 
If MouseY()>766 Then TranslateEntity camera,0,0,-0.5  
 
 
 dvigok
() 
 
 
PositionEntity cub,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1) 
 
RotateEntity cub,0,EntityYaw(movepiv,1),
 
        
;mouselook(camera)                
 
UpdateWorld() 
 
RenderWorld() 
 
Ramka()   
 If 
sel=1 Then  
        
If MouseHit(2Then  
            PositionEntity centpiv
,PickedX#(),PickedY#()+2,PickedZ#()   
        
EndIf       
 EndIf 
 
 
Flip() 
 
Until KeyHit(1)=
End 
Function CreateWorld() 
 
wtex=CreateTexture(256,256
 
SetBuffer TextureBuffer(wtex
 
Color 10,100,10 
 Rect  15
,15,226,226 
 SetBuffer BackBuffer
() 
 
ScaleTexture wtex,10,10 
 plane
=CreatePlane() 
 
EntityTexture plane,wtex 
 EntityType plane
,poltype 
 EntityPickMode plane
,2,
 FreeTexture wtex 
End 
Function 
Function 
CreatePlayer(x#=0,y#=0,z#=0) 
 
movepiv=CreatePivot()  
 
PositionEntity movepiv,x#,y#+4,z#  
 
EntityRadius movepiv,3,4.5  
 EntityType movepiv
,playertype  
 centpiv
=CreatePivot()  
 
PositionEntity centpiv,x#+4,y#+2,z#+4   
 
camera=CreateCamera()  
 
PositionEntity camera,0,100,-70  
 TurnEntity camera
,45,0,0,1  
 CameraClsColor camera
,10,10,150  
 mic
=CreateListener(camera,0.05,0.05,0.08)  
 
Collisions playertype,poltype,2,3  
End 
Function 
Function 
dvigok() 
        ;
PositionEntity campiv,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1)  
 
If KeyHit(60Then wLog=Not wLog WireFrame wLog  
 
If userTime=0 userTime=MilliSecs()  
        
newTime=MilliSecs()   
        
deltaT=newTime-userTime  
        userTime
=newTime  
        speed
#=0.04*deltaT 
 
        
If KeyDown(f_keyThen  
   TranslateEntity camera
,0,0,speed#  
        
Else  
   If 
KeyDown(b_keyThen TranslateEntity camera,0,0,-speed
        
EndIf  
        If 
KeyDown(l_keyThen  
   TranslateEntity camera
,-speed#,0,0  
        
Else 
   If 
KeyDown(r_keyThen TranslateEntity camera,speed#,0,0  
        
EndIf 
 
 
        
pick=CameraPick(camera,MouseX(),MouseY())  
 
  If 
CubSelect 1 Then 
   
If MouseHit(2)=1 Then  
    PositionEntity centpiv
,PickedX#(),PickedY#()+2,PickedZ#()   
   
EndIf  
  
End If 
 
        If 
EntityDistance(movepiv,centpiv)>3 Then  
   PointEntity movepiv
,centpiv  
   MoveEntity movepiv
,0,0,1  
        
EndIf  
        
TranslateEntity movepiv,0,-1,0  
 
End 
Function 
Function 
Ramka()  
    If 
MouseDown(1
        
cx#=MouseX() 
        
cy#=MouseY() 
 
        
If ox>cx Then minx=cx:maxx=ox Else minx=ox:maxx=cx 
        
If oy>cy Then miny=cy:maxy=oy Else miny=oy:maxy=cy 
 
        Rect minx
,miny,maxx-minx,maxy-miny,
 
  CameraProject
(camera,EntityX(cub),EntityY(cub),EntityZ(cub)) 
 
  If 
ProjectedX()>minx And ProjectedX()<maxx And ProjectedY()>miny And ProjectedY()<maxy Then 
   Sel 
Not sel
   CubSelect 
1
  End 
If 
 
  If 
sel=1 Then  
   EntityColor cub
,255,255,
  
Else 
   
EntityColor cub,0,0,
   CubSelect 
0
  
EndIf  
 
 Else 
        
ox#=MouseX() 
        
oy#=MouseY() 
    
EndIf 
 
 
Oval MouseX()-3,MouseY()-3,5,5,0        
End 
Function 

робит

зы. код чрезвычайно убог

}{@KeR 19.02.2011 16:21

Ответ: Управление камерой:
 
А можешь так же написать для того примера где дофига кубиков

mr.DIMAS 19.02.2011 16:23

Ответ: Управление камерой:
 
Минутку

mr.DIMAS 19.02.2011 16:47

Ответ: Управление камерой:
 
Вложений: 1
Вот. Игру успел написать ))))))))))))

}{@KeR 19.02.2011 16:52

Ответ: Управление камерой:
 
Дааа прикольно....только они не рамкой выделяются

mr.DIMAS 19.02.2011 16:54

Ответ: Управление камерой:
 
ну блин сам прикрути

}{@KeR 19.02.2011 16:54

Ответ: Управление камерой:
 
Я щас это и делаю

}{@KeR 19.02.2011 16:59

Ответ: Управление камерой:
 
Я баг нашёл

Попробуй правой кнопкой нажать на сферу которая выделена

mr.DIMAS 19.02.2011 17:11

Ответ: Управление камерой:
 
это не баг - это фича :-D

}{@KeR 19.02.2011 17:32

Ответ: Управление камерой:
 
Можешь на словах объяснить как вот нажимаешь например какую-нибудь кнопку и появляется юнит....и им потом можно управлять

mr.DIMAS 19.02.2011 17:33

Ответ: Управление камерой:
 
Тыркаешь кнопку -> создаешь юнита в точке 0,0,0( CreateUnit(0,0,0) )

или

If KeyHit( 46 ) Then CreateUnit( Rand(-20,20),0,Rand(-20,20))

Фсе

}{@KeR 19.02.2011 17:41

Ответ: Управление камерой:
 
Неет вот например....
как в стратегиях....нажимаешь создать юнит он потом у тя появляется
Объясни как вот это реализовть

mr.DIMAS 19.02.2011 17:44

Ответ: Управление камерой:
 
ээээээ. ну типа есть гуи'шная кнопка. есть здание. у этого здания есть интервал ожидания до создания след. юнита. далее все просто- нажали на кнопку - время пошло, если время превысило интервал - создаем юнита рядом со зданием

fuck man, my brain in critical state

}{@KeR 19.02.2011 18:32

Ответ: Управление камерой:
 
Как чтобы для каждого юнита выполнялась эта программа выше описанная?

mr.DIMAS 19.02.2011 22:11

Ответ: Управление камерой:
 
Что? ( я не х.. не понел ). Вышеописанная программа это чё?

LLI.T.A.L.K.E.R. 19.02.2011 22:44

Ответ: Управление камерой:
 
mr.DIMAS ну это с gui.. нажал gui-кнопку - создаётся юнит.
Ему надо чтобы нажатия и интервалы создания были для множества юнитов))
Смотришь так - уже стратегию тут напишешь.

mr.DIMAS 19.02.2011 23:17

Ответ: Управление камерой:
 
Блин, хакеру читать хелп надо и blitzetc.blitzmax.ru

Alex_Noc 21.02.2011 00:52

Ответ: Управление камерой:
 
ааа ну тогда делай :))))))

}{@KeR 23.02.2011 11:29

Ответ: Управление камерой:
 
А как вот сделать чтобы камера дальше определённого места не двигалась?

mr.DIMAS 23.02.2011 11:34

Ответ: Управление камерой:
 
Если дальше определенного квадрата, то так

quadSize = 200

If EntityX(Camera) > -QuadSize And EntityX( Camera ) < QuadSize and EntityZ( Camera ) > -QuadSize And EntityZ( Camera) < QuadSize Then
.....ТУта движения
End if

ps. Это относительно начала координат

maxturbo 23.02.2011 12:45

Ответ: Управление камерой:
 
Кто че пишет я чет понять не могу :) Хакер или mr.Dimas )))
Хакер все вопросы что ты задал подробно описываются в Help'e по Blitz3D :)

}{@KeR 23.02.2011 19:17

Ответ: Управление камерой:
 
В Help"e ещё найти надо...и тут я спрашиваю уже у знающих людей

!!!???И чем forum.boolean.name Не Help???!!!

Leowey 23.02.2011 19:32

Ответ: Управление камерой:
 
}{@KeR, это не help, это форум!

mr.DIMAS 23.02.2011 20:00

Ответ: Управление камерой:
 
maxturbo, знаки препинания используй - нияух не понятно. Я ничего не пишу, "хакер" что-то пишет.

FireOwl 23.02.2011 20:25

Ответ: Управление камерой:
 
Хакер, какой же ты "хакер", если свои мозги ни капли не задействуешь?
Не в обиду, я не говорю что ты тупой, или еще что-нибудь, просто складывается впечатление, что ты сам не пытаешься решать проблемы. Надо попробовать! А вот после этого, после копания в справках, статьях и документациях и интенсивного шевеления извилинами, если ответ не приходит, постишь тему.

}{@KeR 23.02.2011 20:53

Ответ: Управление камерой:
 
Цитата:

Сообщение от FireOwl (Сообщение 180196)
Хакер, какой же ты "хакер", если свои мозги ни капли не задействуешь?
Не в обиду, я не говорю что ты тупой, или еще что-нибудь, просто складывается впечатление, что ты сам не пытаешься решать проблемы. Надо попробовать! А вот после этого, после копания в справках, статьях и документациях и интенсивного шевеления извилинами, если ответ не приходит, постишь тему.

Ну а я прям так и неделаю...

LLI.T.A.L.K.E.R. 23.02.2011 21:18

Ответ: Управление камерой:
 
Не, }{@KeR, ну например ограничить движение камеры за пределы..
Надо подумать как движется камера (ведь не просто комп так хочет), а ты должен её двигать. Тут всё циферками по осям "xy-z"
Передвинуть камеру в сторону - убавить/прибавить позиции по оси.
Подумать, например поле будет 200 шириной..
Так вот нужно чтобы камера не уходила дальше 200.
Смотришь (знаешь) код где вычисляется камера. Делаешь условие если камера хочет выйти больше 200 см.\м.

Код:

If EntityX#(Camera)>200
;или
CameraX#=EntityX#(Camera)
If CameraX#>200
CameraX#=200

;далее игра..


maxturbo 23.02.2011 21:45

Ответ: Управление камерой:
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 180187)
maxturbo, знаки препинания используй - нияух не понятно. Я ничего не пишу, "хакер" что-то пишет.

Да я просто описал к тому, что хакер просто вопросы задает, а ему готовый код выкладывают, да еще такие вопросы на которые ответ можно легко найти в справке по Blitz3D :)
Еще меня поразили его слова, в Help'e искать надо, так лучше здесь спросить и подождать часок, второй пока ответят нежели можно просто за этот часок, второй перерыть весь Help'er Blitz3D в поисках ответа на свой вопрос!!! :)

RegIon 24.02.2011 08:08

Ответ: Управление камерой:
 
Цитата:

Да я просто описал к тому, что хакер просто вопросы задает, а ему готовый код выкладывают, да еще такие вопросы на которые ответ можно легко найти в справке по Blitz3D
Еще меня поразили его слова, в Help'e искать надо, так лучше здесь спросить и подождать часок, второй пока ответят нежели можно просто за этот часок, второй перерыть весь Help'er Blitz3D в поисках ответа на свой вопрос!!!
как знать...была б в хелпе поисковая система ещё...так всеб про форум забыли...и подгружал бы он себя каждый раз(апример как в VC++)..обновлялся

mr.DIMAS 24.02.2011 22:16

Ответ: Управление камерой:
 
Есть мнение, что начинающему нужно сначала прочитать всё про азы языка, затем ПРОЧИТАТЬ несколько хороших книг "Чистый код" ( в аттаче ), "Идеальный код". А лишь потом постить глупые вопросы( в некоторых случаях касающиеся, не сколь программирования , сколь алгоритмики ). Прочитав книгу в аттаче, ты поймешь, что не нужно, к примеру, называть переменную-счетчик словом( х*рней ) C4ET4uK.


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

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