First of all: the code you provided is not working! It’s missing a colon in the first line, a var in the second line and the definition of speed, positionA and positionB. Also your time-variable t does not increase, but is (more or less) constant.
Here is a complete and working script that you can attach to a Sprite-node:
extends Sprite
var positionA = Vector2(200, 500)
var positionB = Vector2(500, 200)
var t = 0.0
var duration = 5.0
func _process(delta):
t += delta / duration
position = positionA.linear_interpolate(positionB, min(t, 1.0))
If you don’t want to move from positionA to positionB in a straight line, you can’t linearly interpolate the position - that should be obvious from the name! However, you can define a third position and draw a quadratic Bezier curve:
extends Sprite
var positionA = Vector2(200, 500)
var positionB = Vector2(500, 200)
var positionC = Vector2(200, 200)
var t = 0.0
var duration = 5.0
func _process(delta):
t += delta / duration
var q0 = positionA.linear_interpolate(positionC, min(t, 1.0))
var q1 = positionC.linear_interpolate(positionB, min(t, 1.0))
position = q0.linear_interpolate(q1, min(t, 1.0))