Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function love.load()
- ------------------------------
- gravintensity = 4000
- playerspeed = 8000
- numberofballs = 4
- planetrestitution = 0.75
- lineardamping = 0.75
- planetdensity = 0.75
- ------------------------------
- love.physics.setMeter(64)
- world = love.physics.newWorld(0, 0, true)
- dynamicobjects = {}
- sceneobjects = {}
- GenerateBalls(numberofballs)
- sceneobjects.block1 = {}
- sceneobjects.block1.body = love.physics.newBody(world, 0, 650/2, "static")
- sceneobjects.block1.shape = love.physics.newRectangleShape(10, 650)
- sceneobjects.block1.fixture = love.physics.newFixture(sceneobjects.block1.body, sceneobjects.block1.shape, 0)
- love.graphics.setBackgroundColor(104, 136, 248)
- love.graphics.setMode(650, 650, false, true, 0)
- sceneobjects.block2 = {}
- sceneobjects.block2.body = love.physics.newBody(world, 650, 650/2, "static")
- sceneobjects.block2.shape = love.physics.newRectangleShape(10, 650)
- sceneobjects.block2.fixture = love.physics.newFixture(sceneobjects.block2.body, sceneobjects.block2.shape, 0)
- love.graphics.setBackgroundColor(104, 136, 248)
- love.graphics.setMode(650, 650, false, true, 0)
- sceneobjects.block3 = {}
- sceneobjects.block3.body = love.physics.newBody(world, 650/2, 0, "static")
- sceneobjects.block3.shape = love.physics.newRectangleShape(650, 10)
- sceneobjects.block3.fixture = love.physics.newFixture(sceneobjects.block3.body, sceneobjects.block3.shape, 0)
- love.graphics.setBackgroundColor(104, 136, 248)
- love.graphics.setMode(650, 650, false, true, 0)
- sceneobjects.block4 = {}
- sceneobjects.block4.body = love.physics.newBody(world, 650/2, 650, "static")
- sceneobjects.block4.shape = love.physics.newRectangleShape(650, 10)
- sceneobjects.block4.fixture = love.physics.newFixture(sceneobjects.block4.body, sceneobjects.block4.shape, 0)
- love.graphics.setBackgroundColor(104, 136, 248)
- love.graphics.setMode(650, 650, false, true, 0)
- end
- function love.update(dt)
- world:update(dt)
- for i, ball in ipairs(dynamicobjects) do
- for j, well in ipairs(dynamicobjects) do
- if ball ~= well then
- dy = ball.body:getY() - well.body:getY()
- dx = ball.body:getX() - well.body:getX()
- angle = math.atan2(dy, dx)
- dist = math.sqrt(dx * dx + dy * dy)
- ball.body:applyForce(ball.body:getMass() * ((-gravintensity / math.pow(dist, 1.25)) * math.cos(angle)), well.body:getMass() * ((-gravintensity / math.pow(dist, 1.25)) * math.sin(angle)))
- end
- end
- end
- if love.keyboard.isDown("r") then
- for k, ball in ipairs(dynamicobjects) do
- ball.body:destroy()
- end
- dynamicobjects = {}
- GenerateBalls(numberofballs)
- end
- if love.keyboard.isDown("right") then
- dynamicobjects[1].body:applyForce(playerspeed, 0)
- end
- if love.keyboard.isDown("left") then
- dynamicobjects[1].body:applyForce(-playerspeed, 0)
- end
- if love.keyboard.isDown("up") then
- dynamicobjects[1].body:applyForce(0, -playerspeed)
- end
- if love.keyboard.isDown("down") then
- dynamicobjects[1].body:applyForce(0, playerspeed)
- end
- end
- function love.draw()
- for i, ball in ipairs(dynamicobjects) do
- love.graphics.setColor(ball.r, ball.g, ball.b)
- love.graphics.circle("fill", ball.body:getX(), ball.body:getY(), ball.shape:getRadius())
- end
- love.graphics.setColor(50, 50, 50)
- love.graphics.polygon("fill", sceneobjects.block1.body:getWorldPoints(sceneobjects.block1.shape:getPoints()))
- love.graphics.polygon("fill", sceneobjects.block2.body:getWorldPoints(sceneobjects.block2.shape:getPoints()))
- love.graphics.polygon("fill", sceneobjects.block3.body:getWorldPoints(sceneobjects.block3.shape:getPoints()))
- love.graphics.polygon("fill", sceneobjects.block4.body:getWorldPoints(sceneobjects.block4.shape:getPoints()))
- end
- function GenerateBalls(count)
- for i=0,count - 1 do
- ball = {}
- ball.body = love.physics.newBody(world, math.random(650), math.random(650), "dynamic")
- ball.shape = love.physics.newCircleShape(math.random(5, 60))
- ball.fixture = love.physics.newFixture(ball.body, ball.shape, planetdensity)
- ball.fixture:setRestitution(planetrestitution)
- ball.r = math.random(255)
- ball.g = math.random(255)
- ball.b = math.random(255)
- ball.body:setMass(ball.shape:getRadius() * ball.fixture:getDensity())
- ball.body:setLinearDamping(0.75)
- ball.fixture:setUserData("ball")
- table.insert(dynamicobjects, ball)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement