collisions and gravity
Blitz3D Forums/Blitz3D Beginners Area/collisions and gravity
| ||
I have no clue?? every time i try to add collisions to this game it doesnt work no mader how many tries!! <code> Graphics3D 640,480,16,3 SetBuffer=BackBuffer() Global campivot=CreateCube() ; create pivot for camera Global camera=CreateCamera() ; create camera (!!!) ; ---------------------- THIS IS ALL JUST TO POPULATE THE WORLD WITH SOME RUBBISH --------------- Global light=CreateLight() Global player=CreateCube() ; create simple player Global plane=CreatePlane() ; create simple floor PositionEntity player,0,0,-10 MoveEntity player,0,1,0 ; Create texture of size 256x256 tex=CreateTexture(256,256) ; Set buffer - texture buffer SetBuffer TextureBuffer(tex) ; Clear texture buffer with background white color For i=1 To 10 Color Rnd(0,255),Rnd(0,255),Rnd(0,255) Rect Rnd(0,256),Rnd(0,256),Rnd(0,256),Rnd(0,256) Next ; Texture cube with texture EntityTexture plane,tex EntityTexture player,tex ; Set buffer - backbuffer SetBuffer BackBuffer() While Not KeyHit(1) If KeyDown(200) Then MoveEntity player,0,0,.2 End If If KeyDown(203) TurnEntity player,0,1,0 If KeyDown(205) TurnEntity player,0,-1,0 If KeyDown(208) MoveEntity player,0,0,-.1 chasecam(camera,player,.02,8,3,0,0) RenderWorld Flip Wend End Function chasecam(cam,ent,cspeed#,dist#,hite#,xrot#,tilt#) TFormPoint 0,hite#,-dist#,ent,0 cx#=(TFormedX()-EntityX(cam))*cspeed# cy#=(TFormedY()-EntityY(cam))*cspeed# cz#=(TFormedZ()-EntityZ(cam))*cspeed# TranslateEntity cam,cx,cy,cz PointEntity cam,ent RotateEntity cam,xrot#,EntityYaw(cam),tilt# End Function </code> thats a no media crapy version of my game!!i'm giving credit to maker! and i also need a gravity stupid code script thing! I want the player to collide with campivot |
| ||
"mysticlore" you were probably on the right track - although you have taken the collision code out of the code that you have posted. Make sure you put UpdateWorld in front of Render World: UpdateWorld; Perform collision checking RenderWorld Flip Wend End UpdateWolrd animates all entities in your world and performs collision checking. ps The code thing didn't work as you have used the '<' symbols - use the square bracket ones '['. Good luck. Edit: In fact, type in 'UpdateWorld' into Blitz then click on the word with left mouse, then press F1 twice and Blitz will give you a collision help demo. |
| ||
mysticlore: Maybe you should read up on the collision command in the blitz help docs. To perform collisions, you need to first give the entities an entitytype.;your code Global light=CreateLight() Global player=CreateCube() ; create simple player Global plane=CreatePlane() ; create simple floor PositionEntity player,0,0,-10 MoveEntity player,0,1,0 ;my addition EntityType player,1 ; give the player a different EntityType number from EntityType campivot,2; the campivot entity Then add somewhere before the main loop: Collisions 1,2,2,2 ; first two parameters are the entities you want to perform collisions on. ; Next two are the collision detection method and the collision responce. Though i don't really see why you want the player to collide with the cam pivot :) |
| ||
Thank so very much both of you BUT i still need a gravity becuse now if i go up a ramp i would float?? im going to try to while not keyhit(1) moveentity player,0,-1,0 somthing like that??? edit: ok that didnt work out it just made everything really sisnitive and freakout |
| ||
Yeah, something like that would do for simple gravity yeah :o) |
| ||
say i was on a mesh ramp and i was in the middle how could could i like not slide down but if i go in the air then i fall down |
| ||
Example code of simple gravity-based collisions.;; Set up collisions so that the player can walk up slopes while not sliding down them Collisions PlayerID,WorldID,2,3 ;; Main loop Repeat ;; Gravity; VY = VelocityY VY# = VY# - .08 ;; Jump If KeyHit(57) Then VY# = 2.5 ;; Check for ground and or ceiling collision For i = 1 To CountCollisions(Player) ;; React accordingly If CollisionNY(Player,i) >= .1 Then VY# = 0 ElseIf Abs(CollisionNY(Player,i)) >= .5 Then VY# = -Abs(VY#) * .64 EndIf Next ;; Move the player TranslateEntity Player,0,VY#,0 ;; Update world UpdateWorld Until KeyHit(1) |
| ||
i got it i just needed to change it to collisions 1,2,2,3 and i stayed on the ramp |