# Dot

> Calculates the dot product of two three-dimensional vectors defined in the same coordinate space.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.5/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

## Dot(Vector3, Vector3)

Calculates the dot product of two three-dimensional vectors defined in the same coordinate space.

```csharp
public static float Dot(Vector3 lhs, Vector3 rhs)
```

### Parameters

**** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)): The left operand of the dot product.**** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)): The right operand of the dot product.

### Returns

| Type                                                          | Description                                 |
| ------------------------------------------------------------- | ------------------------------------------- |
| [float](https://learn.microsoft.com/dotnet/api/system.single) | The dot product of the lhs and rhs vectors. |

### Remarks

The dot product is a float value equal to the product of the magnitudes of the lhs and rhs vectors and the cosine of the angle between them.

For [Vector3.normalized](/engine/6000.5/script-reference/unityengine/vector3/normalized.md) vectors Dot returns 1 if they point in exactly the same direction, -1 if they point in completely opposite directions and zero if the vectors are perpendicular.

The dot product can also be used to find the scalar component of one vector in the direction of another vector.

### Examples

```csharp
// detects if other transform is behind this object

using UnityEngine;
using System.Collections;

public class Vector3DotProductExample : MonoBehaviour
{
    public Transform other;

    void Update()
    {
        if (other)
        {
            // transform the forward vector from local to world space
            Vector3 forward = transform.TransformDirection(Vector3.forward);
            // calculate a unit vector from the other object to this object
            Vector3 toOther = Vector3.Normalize(other.position - transform.position);
            // use the dot product sign to determine whether other is in front or behind
            if (Vector3.Dot(forward, toOther) < 0)
            {
                print("The other transform is behind me!");
            }
        }
    }
}
```

## Dot(Vector3, Vector3)

Calculates the dot product of two three-dimensional vectors defined in the same coordinate space.

```csharp
public static float Dot(in Vector3 lhs, in Vector3 rhs)
```

### Parameters

**** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)): The left operand of the dot product.**** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)): The right operand of the dot product.

### Returns

| Type                                                          | Description                                 |
| ------------------------------------------------------------- | ------------------------------------------- |
| [float](https://learn.microsoft.com/dotnet/api/system.single) | The dot product of the lhs and rhs vectors. |

### Remarks

The dot product is a float value equal to the product of the magnitudes of the lhs and rhs vectors and the cosine of the angle between them.

For [Vector3.normalized](/engine/6000.5/script-reference/unityengine/vector3/normalized.md) vectors Dot returns 1 if they point in exactly the same direction, -1 if they point in completely opposite directions and zero if the vectors are perpendicular.

The dot product can also be used to find the scalar component of one vector in the direction of another vector.

### Examples

```csharp
// detects if other transform is behind this object

using UnityEngine;
using System.Collections;

public class Vector3DotProductExample : MonoBehaviour
{
    public Transform other;

    void Update()
    {
        if (other)
        {
            // transform the forward vector from local to world space
            Vector3 forward = transform.TransformDirection(Vector3.forward);
            // calculate a unit vector from the other object to this object
            Vector3 toOther = Vector3.Normalize(other.position - transform.position);
            // use the dot product sign to determine whether other is in front or behind
            if (Vector3.Dot(forward, toOther) < 0)
            {
                print("The other transform is behind me!");
            }
        }
    }
}
```
