3/24/2017

These two variables will hold the desired X,Y coordinates for the limited move

```
float MoveLimitedX;
float MoveLimitedY;
```

These are the variables being used in the calculations MovementRadius is the distance the unit is allowed to move from it’s starting point

`float MovementRadius = 4f;`

This is the X and Y coordinates for the unit that’s moving

```
float UnitX = 6f;
float UnitY = 0f;
```

These are the x and y coordinates for the target that the unit is moving towards

```
float TargetX = 0f;
float TargetY = 8f;
```

With two points, we’re imagining a triangle being formed from the unit to the target with the third point as a virtual point created where the axis from both points meet. This forms a right triangle with the line between the unit and the target as the hypotenuse, so we’ll first calculate the hypotenuse. This uses pythagoreums theorum of A^2 + B^2 = C^2

`float hypotenuse = System.Math.Sqrt(((UnitX - TargetX) ^ 2) + ((UnitY - TargetY) ^ 2));`

Now that we have the hypotenuse, we can calculate the x and y coordinates for the limited move. In case you can’t tell, we’re actually calculating Sine and multiplying it by MovementRadius to get MoveLimitedY, and we’re calculating Cosine and multiplying it by MovementRadius to get MoveLimitedX

```
MoveLimitedX = UnitX - (((UnitX - TargetX) / hypotenuse) * MovementRadius);
MoveLimitedY = UnitY - (((UnitY - TargetY) / hypotenuse) * MovementRadius);
```

MoveLimitedX should be equal to 3.6, and MoveLimitedY should be equal to 3