---
name: "getPos"
type: command
status: ok
groups: ["Positions"]
arma3_since: "0.50"
locality: {"argument": "global", "effect": null, "server_exec": false}
source: https://community.bistudio.com/wiki/getPos
revid: 377527
updated: 2026-01-02T06:52:50Z
---

# getPos

*Command · Positions · Arma 3 v0.50 · introduced in Operation Flashpoint v1.00*

Locality: arguments **global**

## Description

Returns object or location position. If the argument is an object, the return value is in format [PositionAGLS](../topics/Position.md#positionagls).

The alternative syntax gets the position given distance and heading away from provided object or position - the command equivalent of [BIS_fnc_relPos](../functions/BIS_fnc_relPos.md).

> [!IMPORTANT]
> Do **not** use this command's first syntax to get an object's position in 3D format:
> - the Z value from this command is **relative** to the surface underneath, and there is no compatible setter command to use it with;
> the commonly misused code: `_obj1 setPos getPos _obj2` is **absolutely wrong**
> - this command is significantly **slower** than other position commands because it has to calculate the surface below a position from objects in the (2D) area; its performance therefore suffers from areas with a high density of objects such as cities, and can easily be ~20x slower than other, simpler position commands - see [this benchmark](../topics/Code_Optimisation.md#getpos-2a-and-setpos-2a).
> The **only** correct usage of this command is to determine the altitude of an object **from the surface below it** (see [#Example 4](../commands/getPos.md#example-4)).

## Syntax

### Syntax 1

```sqf
getPos object
```

**Parameters:**

- `object`: [Object](../topics/Object.md)

**Returns:** [PositionAGLS](../topics/Position.md#positionagls) - where Z is the height over the surface underneath

### Syntax 2

```sqf
getPos location
```

**Parameters:**

- `location`: [Location](../topics/Location.md)

**Returns:** [PositionAGL](../topics/Position.md#positionagl) - see [locationPosition](../commands/locationPosition.md)

### Syntax 3

*since arma3 1.56*

```sqf
origin getPos [distance, heading]
```

**Parameters:**

- `origin`: [Object](../topics/Object.md), [Position2D](../topics/Position.md#introduction) or [Position3D](../topics/Position.md#introduction)
- `distance`: [Number](../topics/Number.md) - distance from position
- `heading`: [Number](../topics/Number.md) - in which compass direction

**Returns:** [PositionAGLS](../topics/Position.md#positionagls) - the Z value is **terrain level [Above Ground Level](../topics/Position.md#positionagl)**, either 0 over land or [getTerrainHeightASL](../commands/getTerrainHeightASL.md) (negative value) over water

## Examples

### Example 1

```sqf
hintSilent str getPos player;
```

### Example 2

[getPos](../commands/getPos.md) vs. other methods (over sea). Pay attention to Z values:

```sqf
getPos ship;                // [2412.01, 6036.33, -0.839965]
getPosATL ship;                // [2412.01, 6036.33, 19.4266]
getPosASL ship;                // [2412.01, 6036.33, -0.920066]
getPosASLW ship;            // [2412.01, 6036.33, -0.865981]
visiblePosition ship;        // [2412.02, 6036.33, -0.837952]
visiblePositionASL ship;    // [2412.02, 6036.33, -0.91798]
position ship;                // [2412.01, 6036.33, -0.839965]
```

### Example 3

[getPos](../commands/getPos.md) vs. other methods (over land, on top of a 100m high building). Pay attention to Z values:

```sqf
getPos car;                    // [2508.64, 5681.47, 0.0609589]
getPosATL car;                // [2508.64, 5681.47, 100.0356369]
getPosASL car;                // [2508.64, 5681.47, 171.718]
getPosASLW car;                // [2508.64, 5681.47, 171.718]
visiblePosition car;        // [2508.64, 5681.47, 0.0609512]
visiblePositionASL car;        // [2508.64, 5681.47, 171.718]
position car;                // [2508.64, 5681.47, 0.0609589]
```

### Example 4

Determine if a free-falling unit is close enough to the surface (including buildings, aircraft carriers etc) below to deploy the parachute:

```sqf
waitUntil { sleep 1; getPos player select 2 < 200 };
hint "Deploying a parachute might be a good idea";
```

### Example 5

Find position 100 metres and 45 degrees from player position:

```sqf
player getPos [100, 45];    // e.g [1834, 2230, 0] if resulting pos is over land
                            // or [120, 256, -271] if resulting pos is over water
```

## See also

[getPosVisual](../commands/getPosVisual.md) · [getRelPos](../commands/getRelPos.md) · [setPos](../commands/setPos.md) · [Position](../topics/Position.md) · [position](../commands/position.md) · [getPosATL](../commands/getPosATL.md) · [getPosASL](../commands/getPosASL.md) · [getPosASLW](../commands/getPosASLW.md) · [visiblePosition](../commands/visiblePosition.md) · [visiblePositionASL](../commands/visiblePositionASL.md) · [getMarkerPos](../commands/getMarkerPos.md)

## Community notes

**Dr_Eyeball** — 2007-02-17

`getPos obj select 2` might return the vertical position above ground level, but for a stacked object, it returns the vertical position above the object beneath it. The same problem existed for [getPosASL](../commands/getPosASL.md) (**pre-Arma 2 games only**). There was a [discussion](http://www.flashpoint1985.com/cgi-bin/ikonboard311/ikonboard.cgi?s=e587356595b907e91f96b8817d7f8a26;act=ST;f=71;t=57918) thread in the BIS forums which suggested the use of the command [modelToWorld](../commands/modelToWorld.md) instead to get around this issue where an absolute vertical position is required. ArmA Ver **1.02**.

<sub>Source: [BI Community Wiki — getPos](https://community.bistudio.com/wiki/getPos) (revision 377527).</sub>
