Spawning into a Flying Aircraft

Most vehicles are easy enough to get into a running Arma 3 mission with a createVehicle call, but when you need an aircraft it isn't quite so simple. Rather than trying to spawn an aircraft on a runway and in the correct direction—and then spending time to get it in the air—this script creates an aircraft that is already flying and moves a unit straight into it.

The first thing to try with this snippet is to stick yourself into a flying A-164 Wipeout:

[] call fhcb_spawnFlyingAircraft;

For a specific aircraft, specify the class name:

["O_Plane_CAS_02_F"] call fhcb_spawnFlyingAircraft;

The initial altitude, position and direction can also be specified. This usage example moves the player into a flying aircraft, heading east, 1000 meters above the "planeSpawnPoint" marker position:

[
    "O_Plane_CAS_02_F",
    player,
    1000,
    getMarkerPos "planeSpawnPoint",
    90
] call fhcb_spawnFlyingAircraft;

The snippet that must be executed first—to define the fhcb_spawnFlyingAircraft function so that the above examples will work—is:

fhcb_spawnFlyingAircraft = 
{
    params [
        ["_planeClass", "B_Plane_CAS_01_F"],
        ["_pilot", player]];

    params [
        "",
        "",
        ["_altitude", 200],
        ["_groundPosition", getPos _pilot],
        ["_direction", getDir _pilot]];

    private _position =
        _groundPosition vectorAdd [0, 0, _altitude];

    private _speedProportion = 0.5;

    private _landingSpeed = getNumber (configFile >>
        "CfgVehicles" >> _planeClass >> "landingSpeed");

    private _maxSpeed = getNumber (configFile >>
        "CfgVehicles" >> _planeClass >> "maxSpeed");

    private _speed =
        _speedProportion * (2 * _landingSpeed + _maxSpeed);

    if (!local _pilot) exitWith { };

    private _plane = createVehicle [_planeClass, _position, [], 200, "FLY"];

    _plane setDir _direction;
    _plane setPos _position;

    _plane setVelocity 
        ([sin _direction, cos _direction, 0] vectorMultiply (_speed / 3.6));

    _pilot assignAsDriver _plane;
    _pilot moveInDriver _plane;

    _plane
};

One thing to note about this snippet is that it doesn't let you specify the initial speed. Instead, it calculates a reasonable speed by taking a value somewhere between the landing and maximum speeds that are defined for each aircraft in Arma 3's configuration files.