# 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).

**Answer** by Ossorum
·
May 19, 2016 at 06:02 AM

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
}
}
```

### Your answer

### Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.