November 25, 2020, 07:57:50 AM

Author Topic: [bb] Simple car physics by Jeppe Nielsen [ 1+ years ago ]  (Read 663 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Simple car physics by Jeppe Nielsen [ 1+ years ago ]
« on: June 29, 2017, 12:28:38 AM »
Title : Simple car physics
Author : Jeppe Nielsen
Posted : 1+ years ago

Description : Drive a cube around in a spherical world

Code :
Code: BlitzBasic
  1. ; Simple car physics by Jeppe Nielsen 2003
  2.  
  3.  
  4. Const gravity#=-0.01 ;gravity constant
  5.  
  6.  
  7. Graphics3D 640,480,16,2
  8.  
  9. Const car_col=1
  10. Const world_col=2
  11.  
  12. Collisions car_col,world_col,2,2
  13.  
  14.  
  15. light=CreateLight(1)
  16.  
  17. RotateEntity light,30,20,0
  18.  
  19. plane=CreatePlane()
  20.  
  21. EntityType plane,world_col
  22. EntityColor plane,255,0,0
  23.  
  24. For n=1 To 100
  25.  
  26. If Rnd(10)<5
  27.  
  28. sphere=CreateSphere(16)
  29.  
  30. Else
  31.  
  32. sphere=CreateCube()
  33.  
  34. EndIf
  35.  
  36. EntityType sphere,world_col
  37. PositionEntity sphere,Rnd(-40,40),Rnd(2),Rnd(-40,40)
  38. EntityColor sphere,Rnd(255),Rnd(255),Rnd(255)
  39.  
  40. Next
  41.  
  42. sp=CreateSphere()
  43. ScaleEntity sp,100,100,100
  44. FlipMesh sp
  45.  
  46. camera=CreateCamera()
  47. CameraClsColor camera,0,0,255
  48.  
  49.  
  50. car.car=carnew(0,5,0)
  51.  
  52. Repeat
  53. TFormPoint 0,3,-5,care,0
  54.  
  55. dx#=(TFormedX()-EntityX(camera))*.1
  56. dy#=(TFormedY()-EntityY(camera))*.1
  57. dz#=(TFormedZ()-EntityZ(camera))*.1
  58.  
  59. TranslateEntity camera,dx,dy,dz
  60.  
  61. PointEntity camera,care
  62.  
  63. carcontrol()
  64. carupdate()
  65.  
  66. RenderWorld()
  67.  
  68. Flip
  69.  
  70.  
  71. Until KeyDown(1)
  72. End
  73.  
  74.  
  75. Type car
  76.  
  77. Field e ;entity
  78.  
  79. Field x#,y#,z# ; position in 3d-space
  80.  
  81. Field vx#,vy#,vz# ; velocity
  82.  
  83. Field ax#,ay#,az# ; acceleration
  84.  
  85. End Type
  86.  
  87.  
  88. Function carnew.car(x#,y#,z#)
  89.        
  90.         c.car=New car
  91.        
  92.         cx#=x#
  93.         cy#=y#
  94.         cz#=z#
  95.        
  96.         ce=CreateCube()
  97.         cube=CreateCube()
  98.         ScaleEntity cube,0.3,0.3,0.3
  99.         PositionEntity cube,0,0,1
  100.         EntityParent cube,ce
  101.        
  102.         EntityType ce,car_col
  103.         EntityRadius ce,1
  104.        
  105.         PositionEntity ce,cx,cy,cz
  106.        
  107.         Return c
  108.        
  109. End Function
  110.  
  111. Function carupdate()
  112.        
  113.         For c.car=Each car
  114.        
  115.                 cvy#=cvy#+gravity#
  116.                
  117.                 cvx#=cvx#+cax#
  118.                 cvy#=cvy#+cay#
  119.                 cvz#=cvz#+caz#
  120.                
  121.                 cx#=EntityX(ce)
  122.                 cy#=EntityY(ce)
  123.                 cz#=EntityZ(ce)
  124.                
  125.                 TranslateEntity ce,cvx,cvy,cvz
  126.        
  127.         Next
  128.        
  129.         UpdateWorld()
  130.        
  131.         For c.car=Each car
  132.                
  133.                 ;correct velocity if collided
  134.                 cvx=(EntityX(ce)-cx)
  135.                 cvy=(EntityY(ce)-cy)
  136.                 cvz=(EntityZ(ce)-cz)
  137.                
  138.                
  139.                 ;slow down due to friction
  140.                 If EntityCollided(ce,world_col)
  141.                        
  142.                         cvx#=cvx*0.98
  143.                         cvy#=cvy*0.98
  144.                         cvz#=cvz*0.98
  145.                
  146.                 EndIf
  147.                
  148.                 cax#=0
  149.                 cay#=0
  150.                 caz#=0
  151.                
  152.         Next
  153.        
  154. End Function
  155.  
  156.  
  157. Function carcontrol()
  158.        
  159.         For c.car=Each car
  160.                
  161.                 If KeyDown(200)
  162.                        
  163.                         TFormVector 0,0,0.02,ce,0
  164.                        
  165.                         cax#=TFormedX()
  166.                         cay#=TFormedY()
  167.                         caz#=TFormedZ()
  168.                        
  169.                 EndIf
  170.                
  171.                 If KeyDown(208)
  172.                        
  173.                         cvx=cvx*0.99
  174.                         cvy=cvy*0.99
  175.                         cvz=cvz*0.99
  176.                        
  177.                 EndIf
  178.                
  179.                 If KeyDown(57)
  180.                        
  181.                         TFormVector 0,0.05,0,ce,0
  182.                        
  183.                         cax#=cax+TFormedX()
  184.                         cay#=cay+TFormedY()
  185.                         caz#=caz+TFormedZ()
  186.                        
  187.                                                                        
  188.                 EndIf
  189.                
  190.                 If KeyDown(203)
  191.                        
  192.                         TurnEntity ce,0,2,0
  193.                        
  194.                 EndIf
  195.                
  196.                 If KeyDown(205)
  197.                        
  198.                         TurnEntity ce,0,-2,0
  199.                        
  200.                 EndIf
  201.                
  202.                
  203.         Next
  204.        
  205.        
  206.        
  207. End Function


Comments :


T-Head(Posted 1+ years ago)

 Hey, thats good stuff!


CyBeRGoth(Posted 1+ years ago)

 Holy crap T-head i suggest you remove that 'sig'


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal