#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

# Physics - Applying Impulses

edited August 2014 Posts: 145

I am trying to raise a ball when I hold down on the screen and have it fall when I release, however I can't make it smooth and at a gentle speed. My code is to fast and sudden. I am using physics and impulses to do this. Could someone help make this more smooth? Here is my code:

``````-- Use this function to perform your initial setup
function setup()
--ground=physics.body(EDGE,vec2(0,0),vec2(WIDTH,0))

fingers=0
box=physics.body(CIRCLE,50)
box.x=400
box.y=400
box.sleepingAllowed=false
physics.gravity(0,-100)
end

function touched(touch)

if(touch.state == BEGAN)then
fingers = fingers + 1
end

if(touch.state==ENDED)then
fingers = fingers - 1
end

if(fingers>0)then
box:applyForce(vec2(0,800))
end
end

function drawObject(obj)
ellipse(box.x,box.y,50)
end

-- This function gets called once every frame
function draw()
background(0,0,0)
drawObject(box)
end

``````
Tagged:

• Posts: 3,297
``````-- Use this function to perform your initial setup
function setup()
--ground=physics.body(EDGE,vec2(0,0),vec2(WIDTH,0))

fingers=0
box=physics.body(CIRCLE,50)
box.x=400
box.y=400
box.sleepingAllowed=false
physics.gravity(0,-100)
end

function touched(touch)

if(touch.state == BEGAN)then
fingers = fingers + 1
end

if(touch.state==ENDED)then
fingers = fingers - 1
end

end

function drawObject(obj)
if(fingers>0)then
box:applyForce(vec2(0,100))
end
ellipse(box.x,box.y,50)
end

-- This function gets called once every frame
function draw()
background(0,0,0)
drawObject(box)
end
``````
• Posts: 8,625

@austinmccoy Here's something I pulled from one of my projects. Touch the screen for upward thrust. Move you finger left or right to move left or right.

``````displayMode(FULLSCREEN)
supportedOrientations(PORTRAIT_ANY)

function setup()
vel=vec2(0,0)
b=physics.body(CIRCLE,15)
b.x=WIDTH/2-100
b.y=HEIGHT-50
end

function draw()
background(40, 40, 50)
sprite("Tyrian Remastered:Part H",b.x,b.y)
if flame then   -- show lander flame
sprite("Tyrian Remastered:Flame 1",b.x,b.y-20,15,-30)
end
lv=b.linearVelocity
if up then
vel.y=vel.y+.5
b.linearVelocity=lv+vec2(vel.x,vel.y)
end
end

function touched(t)
if t.state==BEGAN or t.state==MOVING and lv~=nil then
up=true
flame=true
vel.x=vel.x+t.deltaX/10
end
if t.state==ENDED then
up=false
flame=false
vel=vec2(0,0)
end
end

``````
• Posts: 145

That Great! Thanks for you help!