y am i walking on walls?
Blitz3D Forums/Blitz3D Beginners Area/y am i walking on walls?
| ||
i have 2 questions: 1. y am i walking on the walls 2. y can't i jump every time i press space if anybody could answer those that would be great thanks, Rubiks14 ; set up the graphics Graphics3D 800,600 ;set up the back buffer SetBuffer BackBuffer() ; some globals Global PlayerGrav# = 0.0 Global Grav# = 0.2 Global jumped = 0 ; collision groups Global PLAYER = 1 Global SCENERY = 2 ; create a light AmbientLight 255,255,255 ; create a camera Global camera = CreateCamera() ; give the camera a distance CameraRange camera,1,600 ; give the camera the same type as the pivot EntityType camera,PLAYER ; create a pivot for the camera Global camera_pivot = CreatePivot() ; give a radius to the pivot EntityRadius camera_pivot,7.5 ; make a type for the piivot EntityType camera_pivot,PLAYER ; move the player to the middle of the map PositionEntity camera_pivot,10,0,10 ; load the level Global level = LoadMesh("my little map.x") ScaleEntity level,20,20,20 EntityType level,SCENERY ; load the gun mesh Global gun = LoadMesh("gloc.3ds",camera) ; load the gun texture weapon_tex2 = LoadTexture("glocmap.jpg") ; texture the gun EntityTexture gun,weapon_tex2 ; rotate the gun RotateEntity gun,12,170,14 ; scale the gun ScaleEntity gun,0.01,0.01,0.01 ; position the gun a little behind the camera PositionEntity gun,1,-1,1.5 ; draw the gun last EntityOrder gun, -1 ; collisions Collisions PLAYER,SCENERY,2,3 Collisions SCENERY,PLAYER,2,3 ; main loop While Not KeyHit(1) MovePlayer() TurnPlayer() ; the player is moving down PlayerGrav# = PlayerGrav# - Grav# ; give gravity to the level If EntityCollided(camera_pivot,SCENERY) ; player gravity is 0 PlayerGrav# = 0.0 ; player not jumping jumped = 0 EndIf ; position the camera with the pivot PositionEntity camera,EntityX#(camera_pivot),EntityY#(camera_pivot),EntityZ#(camera_pivot) ; move the camera to current gravity force TranslateEntity camera_pivot,0,PlayerGrav#,0 ; update the world UpdateWorld ; draw the world RenderWorld ; flip the buffers Flip ; end of main loop Wend ; end of program End Function MovePlayer() ; move the player foward when player presses w If KeyDown(17) Then MoveEntity camera_pivot,0,0,2 ; move the player back when player presses s If KeyDown(31) Then MoveEntity camera_pivot,0,0,-1 ; move the player left when player presses a If KeyDown(30) Then MoveEntity camera_pivot,-2,0,0 ; move the player right when player presses d If KeyDown(32) Then MoveEntity camera_pivot,2,0,0 ; make the player jump if player presses space If KeyHit(57) And jumped = 0 ; make the player jump PlayerGrav# = 3 ; the player has jumped jumped = 1 EndIf End Function Function TurnPlayer() ; turn the player with the mouse TurnEntity camera_pivot,0,-MouseXSpeed(),0 ; make the player look up and down TurnEntity camera,MouseYSpeed(),0,0 ; z roll correction RotateEntity camera_pivot,EntityPitch#(camera_pivot),EntityYaw#(camera_pivot),0 ; z roll correction RotateEntity camera,EntityPitch#(camera),EntityYaw#(camera_pivot),0 ; move the mouse to the center of the screen MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 End Function |
| ||
Well can't actually run the program, but I think your overdoing your collisions, your running player to scenery and scenery to player. Since your scenery does not move it doesn't check scenery to player collision so take that line out. Try that first, if it doesn't work change your collision method to 2 instead of 3. One other thing that you might try is, collision method 3 stops a mesh from sliding down another mesh, but not from oing up, thus if your possibly 1% off on your wall it could just be walking up it. Maybe not, but perhaps try tilting the top of the wall in just a touch and this might also stop it. As far as jumping change keyhit(57) to keyhit(57) or keydown(57). Even when using flush keys I have this problem, it will sometimes read the keys as keydown, even if you hit them as fast as you possibly can. that should fix that problem. I'm no expert, but i suggest using floor/ground/terrains as a different mesh and type. I don't think its a good idea to make it all one mesh. Anyone back me up here? |
| ||
ok my jumping is fixed but i am still walking up the walls, part of the reason could be my retarded level that i just threw together to test this out but i tried it with another level and it did to so i guess that isn't it another thing, i only walk on the walls while i'm holding down the jump key |
| ||
another thing, i only walk on the walls while i'm holding down the jump key Well, then that's why! You'll have to change your code, so that it pushes you away from the wall when you're in the air just enough to allow you to fall. 2. y can't i jump every time i press space y = why i = I This isn't a cellphone, so please type proper. |
| ||
you could also add (parent) a pivot between the feet, with a small radius. only when this pivot is near the ground (use a linepick) you should allow jumping. y=why? wow I didn't know that. |
| ||
I don't understand what you are saying, could you give an example plz? thanks,Rubiks14 |