transform.Translate with transform.foward

I expect an object with only this code in Update to alway look and move towards target object:

transform.LookAt(target.transform.position);
transform.Translate(transform.forward * speed * 0.06f, Space.Self);

but it doesn’t. This works though:

transform.LookAt(target.transform.position);
transform.position += transform.forward * speed * 0.06f;

Why is that so? transform.Translate moves object in a circle that is tangent to target while object is still facing target all the time.

transform.Translate with the parameter Space.Self expects a local space direction vector. However transform.forward is a world space direction vector.

So your options are

transform.Translate(Vector3.forward, Space.Self);

or

transform.Translate(transform.forward, Space.World);

Both will do the same thing. Of course adding the worldspace direction to the worldspace position will work as well.