I need help controling the ball speed?

Hey I need help on controlling the ball speed what I’m trying to do is not have the ball speed up or slow down. What I just want it in one speed. My problem is the ball always speeds up and I do not know how to control it.

[code]

local ball = display.newImageRect(“smile.png”, 50 ,50 )
ball.x = -200
ball.y = 200
game:insert( ball )
physics.addBody(ball,{density = 35, bounce = 0.2, friction = 0.5, radius = 20})

– This is were the ball moves and always speeds up how do I slow down
local move = function( event )
ball:applyForce( 125, 2000, ball.x, ball.y )
ball.angularVelocity = 700
end

Runtime:addEventListener( “enterFrame”, move )

local slows = function( event )
ball:applyForce( -1000, -4000, ball.x, ball.y )
ball.angularVelocity = 0

end

slow:addEventListener( “touch”, slows )

local move = function( event )
box.x = box.x + 3
camera:update( event )
end

Runtime:addEventListener( “enterFrame”, move )

local function moveCamera()
if (box.x > 90 and box.x < 200000) then
game.x = -box.x + 400
end
end
Runtime:addEventListener( “enterFrame”, moveCamera )

local jump = 0

local function onScreenTouch( event )
if event.phase == “began” then
jump = jump + 1
if jump < 2 then
ball:applyForce( 10, -22000, ball.x, ball.y )
elseif jump == 2 then
ball:applyForce( 10, -22000, ball.x, ball.y )
print(jump)
end

end
end

buttona:addEventListener( “touch”, onScreenTouch )
return localGroup
end [/code] [import]uid: 17058 topic_id: 21504 reply_id: 321504[/import]

As I said in your other thread this is too much code for me to read - however looking at your ball it is moving once per frame, so depending on FPS it may vary. Check your framerate, if the speed changes when it is fluctuating then that would be why.

Peach :slight_smile: [import]uid: 52491 topic_id: 21504 reply_id: 85136[/import]

@peach ok the code is reduced can you please check it again [import]uid: 17058 topic_id: 21504 reply_id: 85170[/import]

@peach what I’m trying do here is keep the ball from one speed not making to fast or slow, but just moving without speeding up or down like a car [import]uid: 17058 topic_id: 21504 reply_id: 85219[/import]

Ah, I see - you’re applying force every frame - that stacks!

Can you use obj:setLinearVelocity() instead? That should fix this. [import]uid: 52491 topic_id: 21504 reply_id: 85269[/import]

@peach I just tried the your code and still same problem, here I will post the plug and play code so you can see the ball speeding up

[code]module(…, package.seeall)

– Main function - MUST return a display.newGroup()
function new()
local localGroup = display.newGroup()

local physics = require(“physics”)
require “ui”
local ui = require(“ui”)
require( “camera” )
local loqsprite = require(‘loq_sprite’)

physics.start()

–physics.setDrawMode(“hybrid”)

local t = {}
local baseline = 0

local tree = {}
local sky = display.newGroup()

local camera = Camera:new()
local life = 5

local game = display.newGroup();
game.x = -10

–[[for i = 1, 100, 1 do

local back = display.newImage( “layer_back.png” )
back.x = back.contentWidth * i - ( back.contentWidth / 2 )
camera:addObject( back )

local middle = display.newImage( “layer_middle.png” )
middle.x = back.x
camera:addObject( middle )

local front = display.newImage( “layer_front.png” )
front.x = back.x
camera:addObject( front )

end

local width, height = camera:getContentSize()
camera:setClampingBounds( 0, 0, width, height )

local onTouch = function( event )
camera:drag( event )
end

Runtime:addEventListener( “touch”, onTouch )]]–
–[[local baseline = 230
local sky1 = display.newImage (“hill.png”)
sky1:setReferencePoint(display.CenterLeftReferencePoint)
sky1.x = 0
sky1.y = baseline - 10
localGroup:insert(sky1)

local baseline3 = 230
local sky3 = display.newImage (“hill2.png”)
sky3:setReferencePoint(display.CenterLeftReferencePoint)
sky3.x = 240
sky3.y = baseline3 - -10
localGroup:insert(sky3)

local sky4 = display.newImage (“hill3.png”)
sky4:setReferencePoint(display.CenterLeftReferencePoint)
sky4.x = 500
sky4.y = baseline - -60
localGroup:insert(sky4)
local tPrevious = system.getTimer()
local function move(event)
local tDelta = event.time - tPrevious
tPrevious = event.time

local xOffset = ( 0.1 * tDelta )

sky1.x = sky1.x - xOffset
sky3.x = sky3.x - xOffset
sky4.x = sky4.x - xOffset

if (sky1.x + sky1.contentWidth) < 0 then
sky1:translate( 480 * 2, 0)
end
if (sky3.x + sky3.contentWidth) < 0 then
sky3:translate( 480 * 2, 0)
end
if (sky4.x + sky4.contentWidth) < 0 then
sky4:translate( 480 * 2, 0)
end
end

Runtime:addEventListener( “enterFrame”, move )]]–

local box = display.newRect(100, 160, 30, 30)
game:insert( box )

local slow = display.newRect(240, 280, 30,30)

local buttona = display.newRect( 30, 280, 30 ,30)

local road1 = display.newRect( -600, 240, 1000, 10 )
physics.addBody(road1,“static”,{density = 0, bounce = 0.1, friction = 0})
road1.name = “road1”
game:insert( road1 )
–camera:addObject( road1 )

local road2 = display.newRect(400, 210 ,10, 40)
road2.alpha = 1
road2.name = “road1”
–camera:addObject( road2 )

local road3 = display.newRect(400, 210, 500, 10 )
physics.addBody(road3,“static”,{density = 0, bounce = 0, friction = 0})
road3.name = “road1”
game:insert( road3 )
–camera:addObject( road3 )

local road4 = display.newRect(900, 180, 10, 40)
physics.addBody(road4,“static”,{density = 0, bounce = 0.1, friction = 0})
road4.name = “road1”
game:insert( road4 )
–camera:addObject( road4 )

local road5 = display.newRect(900, 180, 500, 10)
physics.addBody(road5,“static”,{density = 0, bounce = 0.1, friction = 0})
road5.name = “road1”
game:insert( road5 )
–camera:addObject( road5 )

local road6 = display.newRect(1400, 150, 10, 40)
physics.addBody(road6,“static”,{density = 0, bounce = 0.1, friction = 0})
road6.name = “road1”
game:insert( road6 )
–camera:addObject( road6 )

local road7 = display.newRect(1400, 150, 500, 10)
physics.addBody(road7,“static”,{density = 0, bounce = 0.1, friction = 0})
road7.name = “road1”
game:insert( road7 )
–camera:addObject( road7 )

local road8 = display.newRect(1900, 90, 10, 70)
physics.addBody(road8,“static”,{density = 0, bounce = 0.1, friction = 0})
road8.name = “road1”
game:insert( road8 )
–camera:addObject( road8 )

local road9 = display.newRect(1900, 90, 100, 10)
physics.addBody(road9,“static”,{density = 0, bounce = 0.1, friction = 0})
road9.name = “road1”
game:insert( road9 )
–camera:addObject( road9 )

local road10 = display.newRect(2000, 90, 10, 70)
physics.addBody(road10,“static”,{density = 0, bounce = 0.1, friction = 0})
road10.name = “road1”
game:insert( road10 )
–camera:addObject( road10 )

local road11 = display.newRect(2000, 150, 100, 10)
physics.addBody(road11,“static”,{density = 0, bounce = 0.1, friction = 0})
road11.name = “road1”
game:insert( road11 )
–camera:addObject( road11 )

local road12 = display.newRect(2100, 150, 10, 70)
physics.addBody(road12,“static”,{density = 0, bounce = 0.1, friction = 0})
road12.name = “road1”
game:insert( road12 )
–camera:addObject( road12 )

local road13 = display.newRect(2100, 220, 500, 10)
physics.addBody(road13,“static”,{density = 0, bounce = 0.1, friction = 0})
road13.name = “road1”
game:insert( road13 )
–camera:addObject( road13 )

local road14 = display.newRect(2600, 220, 10, 40)
physics.addBody(road14,“static”,{density = 0, bounce = 0.1, friction = 0})
road14.name = “road1”
game:insert( road14 )
camera:addObject( road14 )

local road15 = display.newRect(2600, 260, 500, 10)
physics.addBody(road15,“static”,{density = 0, bounce = 0.1, friction = 0})
road15.name = “road1”
game:insert( road15 )
–camera:addObject( road15 )

local road16 = display.newRect(3100, 230, 10, 40)
physics.addBody(road16,“static”,{density = 0, bounce = 0.1, friction = 0})
road16.name = “road1”
game:insert( road16 )
–camera:addObject( road16 )

local road17 = display.newRect(3100, 230, 500, 10)
physics.addBody(road17,“static”,{density = 0, bounce = 0.1, friction = 0})
road17.name = “road1”
game:insert( road17 )
–camera:addObject( road17 )

local road18 = display.newRect(3600,200, 10, 40)
physics.addBody(road18,“static”,{density = 0, bounce = 0.1, friction = 0})
road18.name = “road1”
game:insert( road18 )
–camera:addObject( road18 )

local road19 = display.newRect(3600,200, 400, 10)
physics.addBody(road19,“static”,{density = 0, bounce = 0.1, friction = 0})
road19.name = “road1”
game:insert( road19 )
–camera:addObject( road19 )

local road20 = display.newRect(4000,200, 10, 70)
physics.addBody(road20,“static”,{density = 0, bounce = 0.1, friction = 0})
road20.name = “road1”
game:insert( road20 )
–camera:addObject( road20 )

local road21 = display.newRect(4000,260, 100, 10)
physics.addBody(road21,“static”,{density = 0, bounce = 0.1, friction = 0})
road21.name = “road1”
game:insert( road21 )
–camera:addObject( road21 )

local road22 = display.newRect(4100,200, 10, 70)
physics.addBody(road22,“static”,{density = 0, bounce = 0.1, friction = 0})
road22.name = “road1”
game:insert( road22 )
–camera:addObject( road22 )

local road23 = display.newRect(4100,200, 500, 10)
physics.addBody(road23,“static”,{density = 0, bounce = 0.1, friction = 0})
road23.name = “road1”
game:insert( road23 )
–camera:addObject( road23 )

local road24 = display.newRect(4600,170, 10, 40)
physics.addBody(road24,“static”,{density = 0, bounce = 0.1, friction = 0})
road24.name = “road1”
game:insert( road24 )
–camera:addObject( road24 )

local road255 = display.newRect(4600,170, 300, 10)
physics.addBody(road255,“static”,{density = 0, bounce = 0.1, friction = 0})
road255.name = “road1”
game:insert( road255 )
–camera:addObject( road25 )

local road25 = display.newRect(4900,170, 10, 40)
physics.addBody(road25,“static”,{density = 0, bounce = 0.1, friction = 0})
road25.name = “road1”
game:insert( road25 )
–camera:addObject( road25 )

local road26 = display.newRect(4900,200, 300, 10)
physics.addBody(road26,“static”,{density = 0, bounce = 0.1, friction = 0})
road26.name = “road1”
game:insert( road26 )
–camera:addObject( road26 )

local road27 = display.newRect(5200,200, 10, 70)
physics.addBody(road27,“static”,{density = 0, bounce = 0.1, friction = 0})
road27.name = “road1”
game:insert( road27 )
–camera:addObject( road27 )

local road28 = display.newRect(5200,260, 100, 10)
physics.addBody(road28,“static”,{density = 0, bounce = 0.1, friction = 0})
road28.name = “road1”
game:insert( road28 )
–camera:addObject( road28 )

local road29 = display.newRect(5300,200, 10, 70)
physics.addBody(road29,“static”,{density = 0, bounce = 0.1, friction = 0})
road29.name = “road1”
game:insert( road29 )
–camera:addObject( road29 )

local road30 = display.newRect(5300,200, 200, 10)
physics.addBody(road30,“static”,{density = 0, bounce = 0.1, friction = 0})
road30.name = “road1”
game:insert( road30 )
–camera:addObject( road30 )

local road31 = display.newRect(5500,200, 10, 70)
physics.addBody(road31,“static”,{density = 0, bounce = 0.1, friction = 0})
road31.name = “road1”
game:insert( road31 )
–camera:addObject( road31 )

local road32 = display.newRect(5500,260, 400, 10)
physics.addBody(road32,“static”,{density = 0, bounce = 0.1, friction = 0})
road32.name = “road1”
game:insert( road32 )
–camera:addObject( road32 )

local road33 = display.newRect(5900,200, 10, 70)
physics.addBody(road33,“static”,{density = 0, bounce = 0.1, friction = 0})
road33.name = “road1”
game:insert( road33 )
–camera:addObject( road33 )

local road34 = display.newRect(5900,200, 400, 10)
physics.addBody(road34,“static”,{density = 0, bounce = 0.1, friction = 0})
road34.name = “road1”
game:insert( road34 )
–camera:addObject( road34 )

local road35 = display.newRect(6300,200, 10, 40)
physics.addBody(road35,“static”,{density = 0, bounce = 0.1, friction = 0})
road35.name = “road1”
game:insert( road35 )
–camera:addObject( road35 )

local road36 = display.newRect(6300,230, 500, 10)
physics.addBody(road36,“static”,{density = 0, bounce = 0.1, friction = 0})
road36.name = “road1”
game:insert( road36 )
–camera:addObject( road36 )

local road37 = display.newRect(6800,200, 10, 40)
physics.addBody(road37,“static”,{density = 0, bounce = 0.1, friction = 0})
road37.name = “road1”
game:insert( road37 )
–camera:addObject( road37 )

local road38 = display.newRect(6800,200, 500, 10)
physics.addBody(road38,“static”,{density = 0, bounce = 0.1, friction = 0})
road38.name = “road1”
game:insert( road38 )
–camera:addObject( road38 )

local road39 = display.newRect(7300,170, 10, 40)
physics.addBody(road39,“static”,{density = 0, bounce = 0.1, friction = 0})
road39.name = “road1”
game:insert( road39 )
–camera:addObject( road39 )

local road40 = display.newRect(7300,170, 600, 10)
physics.addBody(road40,“static”,{density = 0, bounce = 0.1, friction = 0})
road40.name = “road1”
game:insert( road40 )
–camera:addObject( road40 )

physics.addBody(road2,“static”,{density = 0, bounce = 0.1, friction = 0})
game:insert( road2 )
–camera:addObject( road2 )

ball = display.newCircle(200, 200 ,20 ,20 )
game:insert( ball )
physics.addBody(ball,{density = 30, bounce = 0.2, friction = 0, radius = 19})

local word = display.newText(“Right”, 30 ,30, “Arial”, 30)
word.x = 240
word.y = 270

local lifes = display.newText("Life: ",0,0,nil,22)
lifes.x = 40
lifes.y = 270
lifes.text = "Life: "… life

local function lost (event)
if life == 0 then
display.remove(ball)
end
end
Runtime:addEventListener(“enterFrame”, lost)

local move = function( event )
ball:applyForce( 100, 2000, ball.x, ball.y )
ball.angularVelocity = 700
end

Runtime:addEventListener( “enterFrame”, move )

local slows = function( event )
ball:applyForce( 2000, -22000, ball.x, ball.y )
ball.angularVelocity = 0

end

slow:addEventListener( “touch”, slows )

local move = function( event )
box.x = box.x + 3
camera:update( event )
end

Runtime:addEventListener( “enterFrame”, move )

local function moveCamera()
if (box.x > 90 and box.x < 200000) then
game.x = -box.x + 400
end
end
Runtime:addEventListener( “enterFrame”, moveCamera )

local jump = 0

local function onScreenTouch( event )
if event.phase == “began” then
jump = jump + 1
if jump < 2 then
ball:applyForce( 10, -22000, ball.x, ball.y )
elseif jump == 2 then
ball:applyForce( 10, -22000, ball.x, ball.y )
print(jump)
end

end
end

buttona:addEventListener( “touch”, onScreenTouch )

local function onCollision4(event)
if event.phase == “began” and event.other.name == “road1” then
jump = 0
print(“works”)
end
end
ball.preCollision = onLocalPreCollision
ball:addEventListener(“collision”, onCollision4)

–[[
camera:addObject( road1 )
camera:addObject( road2 )
camera:addObject( road3 )
camera:addObject( road4 )
camera:addObject( road5 )
camera:addObject( road6 )
camera:addObject( road7 )
camera:addObject( road8 )
camera:addObject( road9 )
camera:addObject( road10 )
camera:addObject( road11 )
camera:addObject( road12 )
camera:addObject( road13 )
camera:addObject( road14 )
camera:addObject( road15 )
camera:addObject( road16 )
camera:addObject( road17 )
camera:addObject( road18 )
camera:addObject( road19 )
camera:addObject( road20 )
camera:addObject( road21 )
camera:addObject( road22 )
camera:addObject( road23 )
camera:addObject( road24 )
camera:addObject( road25 )
camera:addObject( road26 )
camera:addObject( road27 )
camera:addObject( road28 )
camera:addObject( road29 )
camera:addObject( road30 )
camera:addObject( road31 )
camera:addObject( road32 )
camera:addObject( road33 )
camera:addObject( road34 )
camera:addObject( road35 )
camera:addObject( road36 )
camera:addObject( road37 )
camera:addObject( road38 )
camera:addObject( road39 )
camera:addObject( road40 )
camera:addObject( road255 )
]]–

return localGroup
end [/code]

So this is the code [import]uid: 17058 topic_id: 21504 reply_id: 85351[/import]

You are still applying force but I did email you in relation to your other thread. [import]uid: 52491 topic_id: 21504 reply_id: 85458[/import]