#### Howdy, Stranger!

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

# Linear Velocity

edited July 2014 in General Posts: 142

I'm a little bit confused on something within Codea. I am trying to get a ball to aim itself towards my touch (t.x). I've tried to use linearVelocity(the ball is a physics body) ,but when called, it flies in a completely opposite direction to my touch. Any advice on what I need to do?

Tagged:

• edited July 2014 Posts: 8,739

@Staples Tap the screen or drag your finger around the screen.

``````displayMode(FULLSCREEN)

function setup()
b=physics.body(CIRCLE,20)
b.x=WIDTH/2
b.y=HEIGHT/2
b.gravityScale=0
end

function draw()
background(40, 40, 50)
fill(255)
ellipse(b.x,b.y,40)
end

function touched(t)
if t.state==BEGAN or t.state==MOVING then
dx=t.x-b.x
dy=t.y-b.y
b.linearVelocity=vec2(dx,dy)
end
end

``````
• Posts: 8,739

@Staples Here's another version where the ball will stop at the last touched point.

``````displayMode(FULLSCREEN)

function setup()
b=physics.body(CIRCLE,20)
b.x=WIDTH/2
b.y=HEIGHT/2
b.gravityScale=0
tx=b.x
ty=b.y
end

function draw()
background(40, 40, 50)
fill(255)
ellipse(b.x,b.y,40)
dx=tx-b.x
dy=ty-b.y
b.linearVelocity=vec2(dx,dy)

end

function touched(t)
if t.state==BEGAN or t.state==MOVING then
tx=t.x
ty=t.y
end
end

``````
• Posts: 142

@dave1707 perfect, thanks. I was taking it that linearVelocity was forcing an object towards a certain vec2, but I now understand that it is basically the difference in direction from its current direction. Am I correct in saying this?

• Posts: 8,739

@Staples linearVelocity is the direction you want the object to go. If you want it to go left, then it would have a negative x velocity. To go right, it would have a positive x velocity. To go up, it has a positive y velocity. To go down, a negative y velocity. To go at some diagonal, the x,y velocities would be some x,y value positive or negative.

• edited July 2014 Posts: 1,595

@Staples yes you do need to find the difference between two vectors for the linearVelocity. body1.linearVelocity = (body2.position - body1.position) will give the velocity of the direction towards body2's position and (body1.position - body2.position) will give the direction facing away from body2, equally you can do (body2.position - body1.position)*-1 to give the direction facing away from body2.
If you already knew this then you know enough to make a good game.