- Home /

# Using "rigidbody.AddForce" to throw an object towards a target - iOS

On iOS, I have a wrecked car with a Rigidoby that should be pushed towards a specified target in the space (that target is the position where you touch the screen). The force must be applied only on the XZ plane, so no need to calculate Y height. Actually, I can find correctly the touch point. Consider that my car doesn't need to stop moving on the target, but just to slide towards it until it stops (before or after reaching the target, it doesn't matter).

I wanted to use `rigidbody.AddForce`

for this task. Since the direction of must be expressed with a `Vector3`

, i can't specify the precise target position but I have to calculate the angle between the car and the touch point. And here comes the problem: looks like I can't find this angle, no matter how I try.

I tried using this:

`var myAngle = (Vector2.Angle(Vector2(carPos.x,0,carPos.z),Vector2(touchPos.x,0,touchPos.z)))*Mathf.Deg2Rad; `

```
```

rigidbody.AddForce(Mathf.Cos(myAngle),0,Mathf.Sin(myAngle));

This is giving really wrong results. I tried to get `myAngle`

with other three different math functions (wich I found on the web, one was also suggested by my Math teacher), but nothing worked, the angle is always extremely wrong, small, sometimes I get NaN errors.

So, this is the question: how can I calculate the angle between point A and B, relative to the X axis, on an XZ plane? Please consider I can't rotate my car towards that point, it does need to mantain its actual rotation (leaving it to rotate again if it hits something).

Many thanks to everyone who can help. :)

**Answer** by Jesse Anders
·
Mar 31, 2011 at 06:38 AM

Vector3.Angle() returns the angle between two vectors, not the 'directional' angle from one point to another.

The angle you want can be computed using other means, but for this, you don't need to use angles at all. To compute the direction for the force, simply subtract the starting position from the target position and normalize the result, e.g. (untested):

```
Vector3 direction = targetPosition - startPosition;
direction.Normalize();
```

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