mouse look
Blitz3D Forums/Blitz3D Beginners Area/mouse look
| ||
How can i enable mouse look? hears my code: Graphics3D 1280,1024 Const type_level=1 Const type_camera=2 HidePointer Global camera=CreateCamera() CameraRange camera,1,100000000 EntityRadius camera,5 EntityType camera,type_camera PositionEntity camera,10,10,10 mxs=MouseXSpeed() mys=MouseYSpeed() Collisions type_camera,type_level,2,3 music=LoadSound("ga.mp3") LoopSound music PlaySound music skybox=LoadMesh("sky20.3ds") ScaleEntity skybox,10000000,10000000,10000000 level=LoadTerrain("ter.bmp") land=LoadTexture("land.bmp") terra_detail=400000 TerrainShading level,terra_shade ScaleTexture land,100,100 EntityTexture level,land,0,0 d=LoadTexture("tex1.bmp") EntityTexture level,d,0,1 ScaleTexture d,0.1,0.1 RotateEntity level,0,160,0 ScaleEntity level ,100,2000,100 EntityType level,type_level EntityPickMode level,3,5 PositionEntity level,-150,-5000,-5000 d2=LoadTexture("tex1.bmp") EntityTexture level,d2,0,2 ScaleTexture d2,50,50 d3=LoadTexture("tex1.bmp") EntityTexture level,d3,0,3 ScaleTexture d3,5,5 While Not KeyHit(1) If KeyDown(200) Then MoveEntity camera,0,0,1 EndIf If KeyDown(208) Then MoveEntity camera,0,0,-1 EndIf If KeyDown(203) Then TurnEntity camera,0,1.0,0 EndIf If KeyDown(51) Then TranslateEntity camera,0,50,0 EndIf If KeyDown(205) Then TurnEntity camera,0,-1.0,0 EndIf If KeyDown(52) Then MoveEntity camera,0,-50,0 EndIf If KeyDown(53) Then MoveEntity camera,0,0,50 EndIf MoveEntity camera,0,-1,0 UpdateWorld RenderWorld If EntityCollided (camera,type_level) Then Text 1280,1024,"i did it!!!!!" EndIf Flip Wend |
| ||
I use the function below. First, you need to make the following variables global: Global FL_Pitch#,FL_Yaw#,FL_Roll#,FL_XSpeed#,FL_YSpeed#,FL_ZSpeed#You can control the camera with the mouse and these keys: W=forward S=back A=left D=right R=up F=down Just call FreeLook camera somewhere in your main loop. The function: ; free look with mouse & keys Function FreeLook(FL_Cam) FL_Pitch#=FL_Pitch#-(MouseYSpeed()*0.02) : FL_Pitch#=FL_Pitch#/1.2 FL_Yaw#=FL_Yaw#+-(MouseXSpeed()*0.02) : FL_Yaw#=FL_Yaw#/1.2 MoveMouse (GraphicsWidth()/2,GraphicsHeight()/2) FL_ZSpeed#=FL_ZSpeed#+Float(KeyDown(17)-KeyDown(31))*0.12 : FL_ZSpeed#=FL_ZSpeed#/1.14; [w] & [s] FL_XSpeed#=FL_XSpeed#+Float(KeyDown(32)-KeyDown(30))*0.12 : FL_XSpeed#=FL_XSpeed#/1.14 ; [a] & [d] FL_YSpeed#=FL_YSpeed#+Float(KeyDown(19)-KeyDown(33))*0.12 : FL_YSpeed#=FL_YSpeed#/1.14 ; [r] & [f] FL_Roll#=(FL_Yaw#*1.1)-(FL_XSpeed#*2.3) MoveEntity FL_Cam,FL_XSpeed#,FL_YSpeed#+Abs(FL_Roll#*FL_XSpeed#)/50,FL_ZSpeed# Local cp#=EntityPitch(FL_Cam,True)+FL_Pitch# If Abs(cp)>89 Then cp=Sgn(cp)*89 RotateEntity FL_Cam,cp,EntityYaw(FL_Cam)+FL_Yaw#,FL_Roll# End Function |