Main.lua 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. scene = PhysicsScene(0, Vector3(200, 200, 200))
  2. ground = ScenePrimitive(ScenePrimitive.TYPE_PLANE, 30, 30)
  3. ground:loadTexture("Resources/green_texture.png")
  4. scene:addPhysicsChild(ground, 0, 0)
  5. -- Some obstacles
  6. local box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 4,4,6)
  7. box:setPitch(25)
  8. box:setPosition(7, -1, 0)
  9. box:setColor(0.5, 0.5, 1,1)
  10. box:loadTexture("Resources/green_texture.png")
  11. scene:addPhysicsChild(box, 0, 0)
  12. box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 4, 4, 6)
  13. box:setPitch(25)
  14. box:setPosition(-7, -1, 0)
  15. box:setColor(0.5,0.5,1,1)
  16. box:loadTexture("Resources/green_texture.png")
  17. scene:addPhysicsChild(box, 0, 0)
  18. box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 20,2,5)
  19. box:setPosition(0,1, -4.3)
  20. box:setColor(0.5,0.5,1,1)
  21. box:loadTexture("Resources/green_texture.png")
  22. scene:addPhysicsChild(box, 0, 0)
  23. for i = 1, 10 do
  24. box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 0.7,0.7,0.7)
  25. box:loadTexture("Resources/pink_texture.png")
  26. box:Roll(-45 + math.random() % 90)
  27. box:Pitch(-45 + (math.random() % 90))
  28. box:setPosition(-3 + (math.random() % 6), 2 + i*0.5, -5 + math.random() % 3)
  29. scene:addPhysicsChild(box, 0, 1)
  30. end
  31. -- The vehicle
  32. vehicle = ScenePrimitive(ScenePrimitive.TYPE_BOX, 1, 0.5, 2)
  33. vehicle:loadTexture("Resources/pink_texture.png")
  34. vehicle:setColor(1, 1, 0, 1)
  35. vehicle:setPosition(6,1,5)
  36. vehicleController = scene:addVehicleChild(vehicle, 5, 1)
  37. local wheel = ScenePrimitive(ScenePrimitive.TYPE_SPHERE, 0.3, 10, 10)
  38. wheel:loadTexture("Resources/pink_texture.png")
  39. wheel:setColor(0, 1, 0, 1)
  40. vehicleController:addWheel(wheel, Vector3(0.6, 0, -0.5), Vector3(0, -1, 0), Vector3(-1,0,0), 0.2, 0.3, true)
  41. scene:addEntity(wheel)
  42. wheel = ScenePrimitive(ScenePrimitive.TYPE_SPHERE, 0.3, 10, 10)
  43. wheel:loadTexture("Resources/pink_texture.png")
  44. wheel:setColor(0, 1, 0, 1)
  45. vehicleController:addWheel(wheel, Vector3(-0.6,0,-0.5), Vector3(0,-1,0), Vector3(-1,0,0), 0.2, 0.3, true)
  46. scene:addEntity(wheel)
  47. wheel = ScenePrimitive(ScenePrimitive.TYPE_SPHERE, 0.3, 10, 10)
  48. wheel:loadTexture("Resources/pink_texture.png")
  49. wheel:setColor(0, 1, 0, 1)
  50. vehicleController:addWheel(wheel, Vector3(0.6,0,0.5), Vector3(0,-1,0), Vector3(-1,0,0), 0.2, 0.3, false)
  51. scene:addEntity(wheel)
  52. wheel = ScenePrimitive(ScenePrimitive.TYPE_SPHERE, 0.3, 10, 10)
  53. wheel:loadTexture("Resources/pink_texture.png")
  54. wheel:setColor(0, 1, 0, 1)
  55. vehicleController:addWheel(wheel, Vector3(-0.6,0,0.5), Vector3(0,-1,0), Vector3(-1,0,0), 0.2, 0.3, false)
  56. scene:addEntity(wheel)
  57. local steeringValue = 0
  58. local engineForce = 0
  59. local breaking = false
  60. local testBox = ScenePrimitive(ScenePrimitive.TYPE_BOX, 4, 4, 4)
  61. testBox:loadTexture("Resources/pink_texture.png")
  62. testBox:setColor(0.3, 0.5, 1, 0.4)
  63. testBox:setPosition(-5, 2, 7)
  64. scene:addCollisionChild(testBox, 0)
  65. scene:getDefaultCamera():setPosition(16, 16, 16)
  66. scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(0, 1, 0))
  67. function onKeyDown(keyCode)
  68. if keyCode == KEY_r then
  69. vehicleController:warpVehicle(Vector3(6,1,5))
  70. elseif keyCode == KEY_UP then
  71. engineForce = -15
  72. elseif keyCode == KEY_DOWN then
  73. engineForce = 15
  74. elseif keyCode == KEY_LEFT then
  75. steeringValue = 0.5
  76. elseif keyCode == KEY_RIGHT then
  77. steeringValue = -0.5
  78. elseif keyCode == KEY_SPACE then
  79. breaking = true
  80. end
  81. end
  82. function onKeyUp(keyCode)
  83. if keyCode == KEY_DOWN or keyCode == KEY_UP then
  84. engineForce = 0
  85. elseif keyCode == KEY_RIGHT or keyCode == KEY_LEFT then
  86. steeringValue = 0
  87. elseif keyCode == KEY_SPACE then
  88. breaking = false
  89. end
  90. end
  91. function Update(elapsed)
  92. if breaking then
  93. vehicleController:setBrake(20, 2)
  94. vehicleController:setBrake(20, 3)
  95. vehicleController:applyEngineForce(0, 2)
  96. vehicleController:applyEngineForce(0, 3)
  97. else
  98. vehicleController:setBrake(0, 2)
  99. vehicleController:setBrake(0, 3)
  100. vehicleController:applyEngineForce(engineForce, 2)
  101. vehicleController:applyEngineForce(engineForce, 3)
  102. end
  103. vehicleController:setSteeringValue(steeringValue, 0)
  104. vehicleController:setSteeringValue(steeringValue, 1)
  105. local res = scene:testCollision(vehicle, testBox)
  106. if res.collided then
  107. testBox:setColor(1,1,0,0.5)
  108. else
  109. testBox:setColor(0,1,1,0.5)
  110. end
  111. end