360° Snake 2D movement

Hi, i’m doing a 360° snake version, so there is no grid and the movement is smooth. I’m doing this in all body object:

Vector3 lookPos = followingObject.position;
lookPos = lookPos - transform.position;
		float angle = Mathf.Atan2(lookPos.y, lookPos.x) * Mathf.Rad2Deg;
		transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);

		transform.position += transform.right * Time.deltaTime * speed;

followingObject is the center back point of the body gameobject in front of him (it’s the pivot too). So it act like snake game, and all pieces follow the same path of the head. But when i turn letf or right, body pieces overlapp each other. I can avoid this problem? I tried to use a distanceJoint2D and it work, but it move objects like a realistic snake, not like snake game (all on the same path);

We found a fix to your code add these lines (distance is the initial distance between the dots) :

if(lookPos.magnitude >= distance) { transform.position += translation; } else{ transform.position += Vector3.Lerp(Vector3.zero,translation,(lookPos.magnitude/distance)); }