| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- scene = PhysicsScene(0, Vector3(200, 200, 200))
- ground = ScenePrimitive(ScenePrimitive.TYPE_PLANE, 30, 30)
- ground:loadTexture("Resources/green_texture.png")
- scene:addPhysicsChild(ground, 0, 0)
- -- Some obstacles
- local box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 4,4,6)
- box:setPitch(25)
- box:setPosition(7, -1, 0)
- box:setColor(0.5, 0.5, 1,1)
- box:loadTexture("Resources/green_texture.png")
- scene:addPhysicsChild(box, 0, 0)
- box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 4, 4, 6)
- box:setPitch(25)
- box:setPosition(-7, -1, 0)
- box:setColor(0.5,0.5,1,1)
- box:loadTexture("Resources/green_texture.png")
- scene:addPhysicsChild(box, 0, 0)
- box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 20,2,5)
- box:setPosition(0,1, -4.3)
- box:setColor(0.5,0.5,1,1)
- box:loadTexture("Resources/green_texture.png")
- scene:addPhysicsChild(box, 0, 0)
- for i = 1, 10 do
- box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 0.7,0.7,0.7)
- box:loadTexture("Resources/pink_texture.png")
- box:Roll(-45 + math.random() % 90)
- box:Pitch(-45 + (math.random() % 90))
- box:setPosition(-3 + (math.random() % 6), 2 + i*0.5, -5 + math.random() % 3)
- scene:addPhysicsChild(box, 0, 1)
- end
- -- The vehicle
- vehicle = ScenePrimitive(ScenePrimitive.TYPE_BOX, 1, 0.5, 2)
- vehicle:loadTexture("Resources/pink_texture.png")
- vehicle:setColor(1, 1, 0, 1)
- vehicle:setPosition(6,1,5)
- vehicleController = scene:addVehicleChild(vehicle, 5, 1)
- local wheel = ScenePrimitive(ScenePrimitive.TYPE_SPHERE, 0.3, 10, 10)
- wheel:loadTexture("Resources/pink_texture.png")
- wheel:setColor(0, 1, 0, 1)
- vehicleController:addWheel(wheel, Vector3(0.6, 0, -0.5), Vector3(0, -1, 0), Vector3(-1,0,0), 0.2, 0.3, true)
- scene:addEntity(wheel)
- wheel = ScenePrimitive(ScenePrimitive.TYPE_SPHERE, 0.3, 10, 10)
- wheel:loadTexture("Resources/pink_texture.png")
- wheel:setColor(0, 1, 0, 1)
- vehicleController:addWheel(wheel, Vector3(-0.6,0,-0.5), Vector3(0,-1,0), Vector3(-1,0,0), 0.2, 0.3, true)
- scene:addEntity(wheel)
- wheel = ScenePrimitive(ScenePrimitive.TYPE_SPHERE, 0.3, 10, 10)
- wheel:loadTexture("Resources/pink_texture.png")
- wheel:setColor(0, 1, 0, 1)
- vehicleController:addWheel(wheel, Vector3(0.6,0,0.5), Vector3(0,-1,0), Vector3(-1,0,0), 0.2, 0.3, false)
- scene:addEntity(wheel)
- wheel = ScenePrimitive(ScenePrimitive.TYPE_SPHERE, 0.3, 10, 10)
- wheel:loadTexture("Resources/pink_texture.png")
- wheel:setColor(0, 1, 0, 1)
- vehicleController:addWheel(wheel, Vector3(-0.6,0,0.5), Vector3(0,-1,0), Vector3(-1,0,0), 0.2, 0.3, false)
- scene:addEntity(wheel)
- local steeringValue = 0
- local engineForce = 0
- local breaking = false
- local testBox = ScenePrimitive(ScenePrimitive.TYPE_BOX, 4, 4, 4)
- testBox:loadTexture("Resources/pink_texture.png")
- testBox:setColor(0.3, 0.5, 1, 0.4)
- testBox:setPosition(-5, 2, 7)
- scene:addCollisionChild(testBox, 0)
- scene:getDefaultCamera():setPosition(16, 16, 16)
- scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(0, 1, 0))
- function onKeyDown(keyCode)
- if keyCode == KEY_r then
- vehicleController:warpVehicle(Vector3(6,1,5))
- elseif keyCode == KEY_UP then
- engineForce = -15
- elseif keyCode == KEY_DOWN then
- engineForce = 15
- elseif keyCode == KEY_LEFT then
- steeringValue = 0.5
- elseif keyCode == KEY_RIGHT then
- steeringValue = -0.5
- elseif keyCode == KEY_SPACE then
- breaking = true
- end
- end
- function onKeyUp(keyCode)
- if keyCode == KEY_DOWN or keyCode == KEY_UP then
- engineForce = 0
- elseif keyCode == KEY_RIGHT or keyCode == KEY_LEFT then
- steeringValue = 0
- elseif keyCode == KEY_SPACE then
- breaking = false
- end
- end
- function Update(elapsed)
-
- if breaking then
- vehicleController:setBrake(20, 2)
- vehicleController:setBrake(20, 3)
- vehicleController:applyEngineForce(0, 2)
- vehicleController:applyEngineForce(0, 3)
- else
- vehicleController:setBrake(0, 2)
- vehicleController:setBrake(0, 3)
- vehicleController:applyEngineForce(engineForce, 2)
- vehicleController:applyEngineForce(engineForce, 3)
- end
-
- vehicleController:setSteeringValue(steeringValue, 0)
- vehicleController:setSteeringValue(steeringValue, 1)
-
- local res = scene:testCollision(vehicle, testBox)
- if res.collided then
- testBox:setColor(1,1,0,0.5)
- else
- testBox:setColor(0,1,1,0.5)
- end
- end
|