physice

players should be able to stand on a block-please send me code thank you

Haha, I just coded a small example for physics anyways. Here it is. It covers some of the basics of physics. It does use a fancy drawing class, though. You can ignore that part.


-- Physics Simplified

-- Use this function to perform your initial setup
function setup()
    debugDraw = PhysicsDebugDraw() -- Create an instance of a class that draws our physics objects. (This would have to be handled manually, usually.)
    
    
    
    circle = physics.body(CIRCLE, 25) -- Create a circle physics object
    
    circle.x, circle.y = WIDTH / 2, HEIGHT / 2 -- Set the X and Y positions of the circle
    
    circle.linearVelocity = vec2(100, 250) -- Set the velocity of the circle so that it moves to the right and up
    
    circle.restitution = 0.5 -- This is how bouncy the circle is, 1 being it always bounces up to the same height, 0 being it doesn't bounce back up at all. 0.5 is in the middle, where it bounces up only half the height from where it came from
    
    debugDraw:addBody(circle) -- Add the circle to the PhysicsDebugDraw's object cache so it knows to draw it.
    
    
    
    square = physics.body(POLYGON, vec2(0, 0), vec2(0, 50), vec2(50, 50), vec2(50, 50), vec2(50, 0)) -- There's actually no preset for a square, so we have to make a polygon shape with square vertices.
    
    square.x, square.y = WIDTH / 3, HEIGHT / 2 -- Set the square's position
    
    debugDraw:addBody(square) -- Add the object to the cache.
    
    
    
    walls = physics.body(CHAIN, true, vec2(20, 20), vec2(20, HEIGHT - 20), vec2(WIDTH - 20, HEIGHT - 20), vec2(WIDTH - 20, 20), vec2(20, 20)) -- This one's kinda complicated, it's a "chain" object, which cannot move, and is basically a bunch of points. It can work as borders for the screen, as otherwise the circle would fall off the edges.
    
    debugDraw:addBody(walls) -- PhysicsDebugDraw can draw the walls, too.
end

-- This function gets called once every frame
function draw()
    -- This sets a dark background color 
    background(40, 40, 50)

    -- This sets the line thickness
    strokeWidth(5)

    -- Do your drawing here
    debugDraw:draw() -- PhysicsDebugDraw can draw all the objects for us.
end

function touched(touch)
    debugDraw:touched(touch) -- PhysicsDebugDraw has a nice system so that you can drag around an object with your fingers.
end

function collide(contact)
    debugDraw:collide(contact) -- A nice little red spot pops up to show you where a collision is.
end

-- This is a really advanced bit of code from the physics project, used for drawing physics objects. I wouldn't try to begin to understand it if I were you.
PhysicsDebugDraw = class()

function PhysicsDebugDraw:init()
    self.bodies = {}
    self.joints = {}
    self.touchMap = {}
    self.contacts = {}
end

function PhysicsDebugDraw:addBody(body)
    table.insert(self.bodies,body)
end

function PhysicsDebugDraw:addJoint(joint)
    table.insert(self.joints,joint)
end

function PhysicsDebugDraw:clear()
    -- deactivate all bodies
    
    for i,body in ipairs(self.bodies) do
        body:destroy()
    end
  
    for i,joint in ipairs(self.joints) do
        joint:destroy()
    end      
    
    self.bodies = {}
    self.joints = {}
    self.contacts = {}
    self.touchMap = {}
end

function PhysicsDebugDraw:draw()
    
    pushStyle()
    smooth()
    strokeWidth(5)
    stroke(128,0,128)
    
    local gain = 2.0
    local damp = 0.5
    for k,v in pairs(self.touchMap) do
        local worldAnchor = v.body:getWorldPoint(v.anchor)
        local touchPoint = v.tp
        local diff = touchPoint - worldAnchor
        local vel = v.body:getLinearVelocityFromWorldPoint(worldAnchor)
        v.body:applyForce( (1/1) * diff * gain - vel * damp, worldAnchor)
        
        line(touchPoint.x, touchPoint.y, worldAnchor.x, worldAnchor.y)
    end
    
    stroke(0,255,0,255)
    strokeWidth(5)
    for k,joint in pairs(self.joints) do
        local a = joint.anchorA
        local b = joint.anchorB
        line(a.x,a.y,b.x,b.y)
    end
    
    stroke(255,255,255,255)
    noFill()
    
    
    for i,body in ipairs(self.bodies) do
        pushMatrix()
        translate(body.x, body.y)
        rotate(body.angle)
    
        if body.type == STATIC then
            stroke(255,255,255,255)
        elseif body.type == DYNAMIC then
            stroke(150,255,150,255)
        elseif body.type == KINEMATIC then
            stroke(150,150,255,255)
        end
    
        if body.shapeType == POLYGON then
            strokeWidth(3.0)
            local points = body.points
            for j = 1,#points do
                a = points[j]
                b = points[(j % #points)+1]
                line(a.x, a.y, b.x, b.y)
            end
        elseif body.shapeType == CHAIN or body.shapeType == EDGE then
            strokeWidth(3.0)
            local points = body.points
            for j = 1,#points-1 do
                a = points[j]
                b = points[j+1]
                line(a.x, a.y, b.x, b.y)
            end      
        elseif body.shapeType == CIRCLE then
            strokeWidth(3.0)
            line(0,0,body.radius-3,0)            
            ellipse(0,0,body.radius*2)
        end
        
        popMatrix()
    end 
    
    stroke(255, 0, 0, 255)
    fill(255, 0, 0, 255)

    for k,v in pairs(self.contacts) do
        for m,n in ipairs(v.points) do
            ellipse(n.x, n.y, 10, 10)
        end
    end
    
    popStyle()
end

function PhysicsDebugDraw:touched(touch)
    local touchPoint = vec2(touch.x, touch.y)
    if touch.state == BEGAN then
        for i,body in ipairs(self.bodies) do
            if body.type == DYNAMIC and body:testPoint(touchPoint) then
                self.touchMap[touch.id] = {tp = touchPoint, body = body, anchor = body:getLocalPoint(touchPoint)} 
                return true
            end
        end
    elseif touch.state == MOVING and self.touchMap[touch.id] then
        self.touchMap[touch.id].tp = touchPoint
        return true
    elseif touch.state == ENDED and self.touchMap[touch.id] then
        self.touchMap[touch.id] = nil
        return true;
    end
    return false
end

function PhysicsDebugDraw:collide(contact)
    if contact.state == BEGAN then
        self.contacts[contact.id] = contact
        sound(SOUND_HIT, 2643)
    elseif contact.state == MOVING then
        self.contacts[contact.id] = contact
    elseif contact.state == ENDED then
        self.contacts[contact.id] = nil
    end
end


Please don’t go on the forums and literally ask someone to write half a game for you… Take a look at the “Physics Lab” project in the examples, and the physics API documentation.

You’re going to have to write most code for your self, the forums will only help with a small example or troubleshooting.

I’m beginner and would like to see the code so that I can learn in

There’s code to see in the examples and the documentation.

thanks