Skid steer type movement

I’m working a a tank game (I’m new to Unity but know coding) in Unity and I’m trying to make realistic movement (where each tread moves separately).

I don’t want to use “wheel colliders” because it’s really overkill, and I can’t get it to work right anyway.

What I need is: the math for a function (with args for the 2 tread speeds), that will move the tank (using transform.Rotate & transform.Translate).

Like thus:

void Update () {
    //get user input for tread speeds

    Move (leftSpeed,rightSpeed);
}
void Move(float leftSpeed, float rightSpeed) {
    //does calculations and moves tank
}

I’ve spent quite a while, on many a night trying to figure this out; I’m hoping I can solve this!

BTW: This game is mechanically 2D, so the tank has a fixed Y pos (and no hilly terrain).

Wow, I may have gotten it to work!

Here’s the function:

void Move(float leftSpeed, float rightSpeed){
	int dir = 0;//direction
	float s = 0;//slow tread (closer to 0)
	float f = 0;//fast tread (farther from 0)

	if (leftSpeed == rightSpeed) {//going straight
		this.transform.Translate (new Vector3 (0, 0, leftSpeed * Time.deltaTime));
	} else {
		//---set fast/slow
		if (Mathf.Abs(leftSpeed) < Mathf.Abs(rightSpeed)) {
			dir = -1;
			s = leftSpeed;
			f = rightSpeed;
		} else {
			dir = 1;
			f = leftSpeed;
			s = rightSpeed;
		} 

		f *= Time.deltaTime; s *= Time.deltaTime;

		//---calculacte radius of inner drive circle
		float r;//radius of inner circle
		if (s == 0) {
			r = 0;
		} else {
			r = treadDistance / ((f/s) - 1);
		}

		//---calc theta (degrees to rotate)
		float t = (f / (r + treadDistance));//add treadDistance (and use f) to avoind divistion by 0

		//--calculate travel distance
		float distance = ((r + treadDistance / 2) * Mathf.Sin (t / 2) * 2);//distance to move at angle

		//---do the moving
		this.transform.Rotate (new Vector3 (0,(Mathf.Rad2Deg *t/2)*dir,0));//rotate halfway
		this.transform.Translate (new Vector3 (0,0,distance));//move
		this.transform.Rotate (new Vector3 (0,(Mathf.Rad2Deg *t/2)*dir,0));//rotate the rest
	}
}