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

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 Ramkax1, Ramkay1,Ramkax2, Ramkay2
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,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(60) Then wLog=Not wLog Wireframe wLog
If userTime=0 userTime=MilliSecs()
newTime=MilliSecs()
deltaT=newTime-userTime
userTime=newTime
speed#=0.04*deltaT
If KeyDown(f_key) Then
TranslateEntity camera,0,0,speed#
Else
If KeyDown(b_key) Then TranslateEntity camera,0,0,-speed#
EndIf
If KeyDown(l_key) Then
TranslateEntity camera,-speed#,0,0
Else
If KeyDown(r_key) Then 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,0
End Function
Function Ramka()
If MouseHit(1) Then
Ramkax1=MouseX()
Ramkay1=MouseY()
EndIf
If MouseDown(1) Then
Color 0,200,0
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
Ещё вот: (Что не так?)
If MouseZSpeed()=1 Then
MoveEntity camera,0,0,3
ElseIf MouseZSpeed()=-1 Then
MoveEntity camera,0,0,-3
EndIf
Последний раз редактировалось }{@KeR, 18.02.2011 в 12:50.
|