# localPosition

> Position of the transform relative to the parent transform.

## Definition

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

```csharp
public Vector3 localPosition { get; set; }
```

### Remarks

If the transform has no parent, it's the same as [TransformHandle.position](/engine/6000.7/script-reference/unityengine/transformhandle/position.md).

Like most Transform operations, localPosition may not always be accessible, particularly during certain operations such as an [Undo](/engine/6000.7/script-reference/unityeditor/undo.md) operation or before the transform hierarchy is fully initialized. For example, OnValidate() can be invoked before the hierarchy is completely set up, potentially causing a logged error. If you attempt to access localPosition at an incompatible time, it will return Vector3.zero instead of the actual value.

```csharp
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    void Example()
    {
        // Move the object to the same position as the parent:
        TransformHandle thisTransformHandle = transformHandle;
        thisTransformHandle.localPosition = new Vector3(0, 0, 0);

        // Get the y component of the position relative to the parent
        // and print it to the Console
        print(transformHandle.localPosition.y);
    }
}
```

Note that the parent transform's world rotation and scale are applied to the local position when calculating the world position. This means that while 1 unit in [TransformHandle.position](/engine/6000.7/script-reference/unityengine/transformhandle/position.md) is always 1 unit, 1 unit in [TransformHandle.localPosition](/engine/6000.7/script-reference/unityengine/transformhandle/localposition.md) will get scaled by the scale of all ancestors.
