Plugin Documentation

HoverDrive
Physics-based hover, flying and drone movement for pawns

HoverDrive turns any physics-simulating pawn into a hover bike, hover tank, anti-gravity racer, flying drone or 6-DOF ship. Spring-damper hover thrusters follow the terrain, a drive model adds throttle, strafe, turning, banking, boost, drift and air brakes, and a flight mode gives full 6-DOF control with stabilised hovering in place. Influence volumes add wind, lift and gravity zones, events drive your VFX and audio, and input is replicated server-authoritatively for multiplayer. A ready-to-drive Hover Drive Pawn works out of the box.

v1.0
UE 4.27 & 5.8
Win64 & Mac
Category Physics
C++ & Blueprint
Replicated
Alpha XP

Overview

HoverDrive is a movement component for pawns that are not characters: anything whose root is a physics body. It never moves the actor kinematically; every effect is a force or torque on the body, so collisions, ramps, impacts and stacking behave physically. All tuning values are accelerations (cm/s²) multiplied by the body's mass, so a 200 kg bike and a 20 t tank feel the same with the same settings.

  • 1. Hover points: any number of spring-damper raycast thrusters, placed by socket or relative offset (four are generated automatically).
  • 2. Hover Drive Pawn: physics hull, visual body, chase camera and default bindings; throttle, strafe, turn and lift functions.
  • 3. Banking: visual roll into turns and pitch under acceleration, with limits.
  • 4. Altitude hold and terrain following: configurable hover height, height range, maximum slope, flight altitude hold.
  • 5. Flight mode: full 6-DOF drone / flyer control with stabilised hovering in place.
  • 6. Boost: energy pool, drain, recharge delay and rate.
  • 7. Drift and air brake: lateral grip control and drag multiplier.
  • 8. Water and surfaces: hover over a dedicated liquid trace channel and per physical-surface rules.
  • 9. Auto-level: PID roll / pitch stabilisation with strength settings.
  • 10. Influence volumes: wind with gusts, lift and gravity scaling inside an area.
  • 11. Thruster output per point (0-1) and events for VFX and audio, including landing impacts.
  • 12. Grounded / airborne state with events and an air control factor.
  • 13. Telemetry struct and getter.
  • 14. Networking: server-authoritative input replication; physics on the server, movement replicated by the engine.
  • 15. Debug view: console variable HoverDrive.Debug draws rays, forces and telemetry (non-shipping).

Requirements

RequirementDetails
Unreal Engine4.27 (PhysX) and 5.8 (Chaos). Only engine-level physics calls are used (forces, torques, traces), so the behaviour is the same on both physics engines.
ModuleHoverDrive (Runtime)
DependenciesNone (engine modules only; no other plugins are enabled)
BodyAny actor whose root (or chosen) primitive component simulates physics. No content assets are shipped; the Hover Drive Pawn shows the engine cube until you assign your own mesh.
PlatformsWin64 and Mac (the module lists these platforms in the plugin descriptor). The code is platform-independent engine C++ with no OS-specific calls.
Network ReplicatedYes: input travels to the server by RPC, the server simulates, mode / energy / boost replicate, movement is replicated by the engine's physics replication.

Installation

  1. Install HoverDrive from Fab into your engine, or copy the HoverDrive folder into your project's Plugins folder.
  2. Enable HoverDrive in Edit > Plugins and restart the editor.
  3. C++ only: add PublicDependencyModuleNames.Add("HoverDrive"); to your Build.cs.
Verifying the installThe Place Actors panel (or the class picker) lists Hover Drive Pawn and Hover Drive Influence Volume, and Add Component lists Hover Drive.

Quick start

  1. Create a Blueprint class from Hover Drive Pawn (or use the C++ class directly).
  2. Optionally assign your craft's mesh to Body Mesh (reset its scale, which is set to fit the placeholder cube) and resize Hull (Box Extent) to fit it.
  3. Set it as Default Pawn Class of your game mode, or place it in the level with Auto Possess Player = Player 0.
  4. Press Play: W/S throttle, A/D turn, Q/E strafe, Space/Ctrl hover height, Shift boost, Alt drift, X air brake, T flight mode (then R/F pitch, Z/C roll). Gamepads work too (see Input reference).
  5. Type HoverDrive.Debug 2 in the console to see rays, forces and live telemetry.
Using your own pawnAdd a Hover Drive component to any pawn whose root primitive has Simulate Physics on. Add hover points (or keep the four automatic ones), point Banking Target at the visual mesh, and call the Set ... Input functions from your input events.

1. Hover points

Component UHoverDriveComponent — displayed as Hover Drive. Each hover point traces straight down from the craft (along its own down axis). When the trace finds a surface, the point pushes up along the craft's up axis with a spring-damper force: it carries its share of the weight exactly at the hover height, pushes harder when compressed and softer when extended, and damping removes bounce.

Per point: accel = share × g × (1 + Spring Stiffness × compression) − Spring Damping × share × vertical point speed, with compression = (height − distance) / height, applied at the thruster location.

PropertyDefaultDescription
Hover PointsemptyArray of FHoverDrivePoint: Socket (used when it exists on the physics body), Offset (relative to the body, used otherwise) and Force Scale (relative share of the weight, 1). When empty, four points are generated at 80% of the body's bottom corners.
Hover Height100 cmStart hover height (see Altitude).
Max Hover Distance300 cmTrace length; beyond it a point is airborne. Always at least 1.5 × the current hover height.
Spring Stiffness3Dimensionless: extra force per unit of compression relative to the weight-carrying force.
Spring Damping6 /sRemoves vertical speed at the points.
Trace ChannelVisibilityChannel of the hover traces.
Trace Radius00 = line traces; > 0 = sphere sweeps of that radius (smoother over gaps, grates and edges).
Physics Targetowner's rootThe physics body driven. Set Physics Target changes it at runtime.

Nodes: call Set Hover Points (empty = automatic corners), pure Get Hover Point Count, Get Point States, Get Point Location.

2. Hover Drive Pawn

Pawn AHoverDrivePawn — displayed as Hover Drive Pawn. Components:

ComponentSetup
Hull (Box, root)Extent 160 × 100 × 35 cm, profile PhysicsActor, Simulate Physics on, mass 800 kg, linear damping 0.05, angular damping 0.5, hidden in game.
Body MeshStatic mesh attached to the hull, no collision; the engine cube scaled to the hull until you assign your own. It is the hover drive's Banking Target.
Camera Boom / CameraChase camera: arm 900 cm, pitch -15°, socket offset 120 cm up, position and rotation lag 6, does not inherit pitch or roll.
Hover DriveThe movement component.

Input functions (call, Blueprint and C++): Throttle, Strafe, Turn, Lift, Pitch, Roll (float -1..1), Boost, Drift, Air Brake (bool held), Toggle Flight Mode. pure Get Hover Drive returns the component.

Use Default Input Bindings (on) registers the HoverDrive_* axis and action mappings at runtime (no project input settings needed) and binds them. Turn it off when you use Enhanced Input or your own bindings and call the functions above instead.

3. Banking

Banking tilts only the Banking Target (the visual mesh), never the physics body, so it cannot disturb handling or collisions. The rest pose is the target's relative rotation at Begin Play (or when Set Banking Target is called).

PropertyDefaultDescription
Enable BankingonOff returns the mesh smoothly to its rest pose.
Banking TargetBody Mesh on the pawnComponent that is tilted.
Max Bank Roll / Max Bank Pitch25° / 8°Limits.
Roll From Turn1Roll at the full turn rate (fraction of Max Bank Roll). Uses the measured yaw rate, so drifts and collisions bank too.
Roll From Strafe0.6Roll at full strafe input.
Pitch From Acceleration1Nose dips when accelerating and rises when braking (measured forward acceleration relative to Drive Acceleration).
Bank Interp Speed5 /sSmoothing.

pure Get Bank Rotation returns the current visual roll and pitch.

4. Altitude hold & terrain following

In hover mode the hover points keep the craft at Target Hover Height above whatever is below it, so it follows hills, ramps and loops. With Align To Ground the auto-level also tilts the craft to the average ground normal, and the drive pushes along the ground plane.

PropertyDefaultDescription
Hover Height100 cmTarget height at start.
Min Hover Height / Max Hover Height40 / 300 cmRange reachable with the lift input (hover mode) and Set Target Hover Height.
Hover Height Change Speed150 cm/sHow fast the lift input changes the hover height.
Max Slope Angle50°Surfaces steeper than this (measured from world up) are ignored, so walls do not hold the craft up.
Ground Probe Distance10000 cmLength of the centre probe used for altitude above ground (telemetry and Above Ground hold).
Altitude Hold (flight)Absolute AltitudeNone: vertical speed is only braked. Absolute Altitude: holds the world Z captured when the lift input is released. Above Ground: holds the height above the ground (terrain-following flight).
Altitude Hold Strength / Damping4 / 3PD gains of the hold.

Nodes: call Set Target Hover Height, pure Get Target Hover Height.

5. Flight mode

EHoverDriveMode: Hover (ground effect) or Flight. In flight the drive cancels gravity, every input axis becomes a 6-DOF command and every axis without input is braked, so a released drone stops and hovers in place, level, at its altitude.

PropertyDefaultDescription
Start ModeHoverMode at Begin Play (server).
Flight Acceleration1500 cm/s²Forward / strafe acceleration.
Flight Lift Acceleration1200 cm/s²Climb / descent acceleration.
Flight Max Speed2000 cm/sTop speed before boost.
Flight Brake2.5 /sVelocity brake on axes without input (stabilised hovering).
Max Pitch Rate / Max Roll Rate90 / 120 °/sRates at full pitch / roll input. While pitch or roll is held, auto-level is suspended; when released, the craft levels itself.
Flight Rotation Response6 /sHow fast the rates follow the input.
Flight Translate In Local SpaceonOn: translation follows the full orientation (6-DOF ship). Off: yaw-only frame, level translation (camera drone).
Flight Ground CushiononHover points still push when closer than the hover height, for soft landings.

Nodes: call Set Mode, Toggle Flight Mode; pure Get Mode, Is Flying; event On Mode Changed (New Mode).

6. Boost & energy

PropertyDefaultDescription
Max Energy100Energy pool (full at Begin Play).
Boost Drain Rate30 /sEnergy used per second while boosting.
Energy Recharge Rate20 /sEnergy regained per second.
Recharge Delay1 sWait after boosting before recharging starts.
Min Energy To Boost10Energy needed to start a boost (a boost continues until the pool is empty).
Boost Acceleration Scale / Boost Max Speed Scale1.75 / 1.5Multipliers on drive / flight acceleration and top speed.
Infinite EnergyoffBoost never drains.

Nodes: call Set Boost Input, Add Energy (server; pickups, pit lanes); pure Get Energy, Get Energy Ratio, Is Boosting; event On Boost Changed (Is Boosting), On Energy Depleted.

7. Drift & air brake

Hover craft have no tyres: Lateral Grip is what stops them sliding sideways. Drifting lowers it and sharpens turning; the air brake multiplies the drag.

PropertyDefaultDescription
Lateral Grip3 /sHow fast sideways speed is removed (higher = on rails, lower = ice). Reduced in proportion to strafe input.
Drift Grip Scale0.15Grip multiplier while drifting (drift held and grounded in hover mode).
Drift Yaw Rate Scale1.4Turn rate multiplier while drifting.
Linear Drag0.3 /sDrag on the velocity in the ground plane (all axes in flight).
Air Brake Drag Scale6Drag multiplier while the air brake is held (both modes).

Nodes: call Set Drift Input, Set Air Brake Input. Telemetry reports Drifting, Air Braking and the Lateral Speed (slide).

8. Water & surfaces

Two independent ways to hover over liquids and special ground:

Liquid trace channel

Create a trace channel in Project Settings > Collision (for example Liquid, default Ignore), make your water plane Block it and ignore everything else, then enable Trace Liquid Channel and pick it as Liquid Trace Channel. Hover craft now skim across the water while characters and props fall in. The nearer of the ground and liquid hits wins.

PropertyDefaultDescription
Trace Liquid ChanneloffAlso trace the liquid channel.
Liquid Trace ChannelWorldDynamicSet it to your own channel; it must differ from Trace Channel.
Liquid Force Scale1Hover force multiplier over liquid.
Liquid Drag Scale1.5Drag and grip multiplier over liquid.

Physical surface rules

Surface Rules is an array of FHoverDriveSurfaceRule: Surface Type, Can Hover (false = the point looks through that surface as if it were air), Force Scale and Drag Scale. With Only Rule Surfaces on, the craft can hover only over surfaces listed with Can Hover (for example only over a Track or Water surface type). Surface types come from the physical material of the hit (Project Settings > Physics > Physical Surface).

9. Auto-level stabilisation

A PID controller on roll and pitch rotates the craft's up axis toward the target up (world up, or the ground normal when grounded with Align To Ground). Yaw is never touched by it. The output is an angular acceleration, independent of the body's inertia.

PropertyDefaultDescription
Auto LevelonStabilisation on/off.
Align To GroundonLevel to the ground normal when grounded in hover mode.
Auto Level Strength (P)8Correction per radian of tilt.
Auto Level Damping (D)4Damps roll and pitch rotation.
Auto Level Integral (I)0Removes a steady tilt caused by off-centre loads; 0 = PD only.
Auto Level Integral Limit0.5Clamp of the integral term.
Airborne Auto Level Scale0.5Strength multiplier while airborne in hover mode (lets jumps tumble a little).

10. Influence volumes

Actor AHoverDriveInfluenceVolume — displayed as Hover Drive Influence Volume. A box area (scale or rotate the actor to shape it) that acts on every hover drive whose centre of mass is inside. Several volumes add up. They have no collision and cost one point-in-box test per craft per frame.

PropertyDefaultDescription
EnabledonVolume on/off.
Wind Acceleration(600, 0, 0) cm/s²Wind push, mass independent. Set it to zero for a pure lift or gravity zone.
Wind In Local SpaceonThe wind follows the actor's rotation.
Gust Strength / Gust Frequency0.35 / 0.6 HzPerlin-noise gusts as a fraction of the wind.
Lift Acceleration0Extra upward acceleration: updrafts, jump pads, levitation.
Gravity Scale11 = normal, 0.3 = low gravity, 0 = zero-g, 2 = heavy. The hover springs adapt so the hover height stays correct.
Drag Scale / Hover Force Scale1 / 1Drag and hover force multipliers inside.
Falloff Distance150 cmInfluence fades in over this distance from the box faces (0 = hard edge).

Volume nodes: pure Get Influence At, Get Weight At; call Set Extent; event On Hover Drive Entered / On Hover Drive Exited. Component nodes: pure Get Active Influence Volumes, Get Current Influence (combined FHoverDriveInfluence); event On Influence Volume Changed (Volume, Entered).

11. Thruster output & events

Every hover point reports its output as Thrust 0-1 (about 0.5 while hovering at rest, rising when compressed or climbing, 0 when out of range). In flight mode the thrusters also show the weight-carrying and climb command, so engines keep glowing in the air. Drive Thrust is the engine output 0-1 (1 = full throttle with boost).

Node / propertyTypeDescription
Get Point Thrust (Index)pureOutput of one point: drive particle spawn rate, light intensity, audio.
Get Point StatespureArray of FHoverDrivePointState: Grounded, On Liquid, Distance, Compression, Thrust, Location, Impact Point, Impact Normal, Surface Type. Use Impact Point for dust or spray decals.
Get Point Location (Index)pureWorld location of a thruster.
Get Hover Thrust / Get Drive ThrustpureAverage hover output and engine output.
On Thrust Changed (Hover Thrust, Drive Thrust)eventFires when either output changed by Thrust Event Threshold (0.05): set audio pitch / volume here instead of on Tick.
On Landing Impact (Impact Speed, Location)eventHard touchdown: downward speed ≥ Landing Impact Min Speed (250 cm/s). Location = average impact point.

12. Grounded & airborne

The craft is grounded while at least Min Grounded Points (1) hover points touch a valid surface. In flight mode a point counts as touching only within 1.2 × the hover height (landed or skimming).

Node / propertyTypeDescription
Air Control0.35Drive, strafe and turn authority while airborne in hover mode (lateral grip uses it too).
Is Grounded, Get Grounded Point Count, Get Air Time, Get Ground NormalpureState.
On Grounded (Air Time)eventTouchdown at any speed, with the time spent in the air (jump scoring, landing sounds).
On AirborneeventThe craft left the ground.

13. Telemetry

pure Get Telemetry returns an FHoverDriveTelemetry snapshot for HUDs, audio, AI and analytics:

FieldDescription
Speed / Speed KmhSpeed in cm/s and km/h.
Forward Speed / Lateral Speed / Vertical SpeedAlong the craft's forward and right axes, and world Z (cm/s).
Altitude Above Ground / AltitudeHeight of the centre of mass above the ground straight below (-1 = no ground within Ground Probe Distance) and world Z.
Target Hover HeightCurrent target hover height.
Grounded Points / Total PointsHover points on a surface / in use.
Energy / Energy RatioBoost energy and fraction of Max Energy.
Hover Thrust / Drive ThrustOutputs 0-1.
Air Time, Gravity Scale, Active VolumesSeconds airborne, gravity multiplier and number of influence volumes acting.
Mode, Grounded, Boosting, Drifting, Air Braking, Over LiquidState flags.

14. Networking

HoverDrive is server-authoritative:

  1. The owning client writes its input locally and sends it with the unreliable server RPC ServerSetInput whenever it changes (at most Max Input Send Rate, 30 per second) and as a keep-alive every Input Keep Alive Interval (0.2 s). The server clamps every axis. Mode and hover-height changes use reliable RPCs.
  2. The server simulates the physics, owns the energy, boost and mode, and replicates them (Energy, Boosting, Mode; target hover height and input to the other clients).
  3. The engine's replicated movement (physics replication of the root body) moves every client's copy; the Hover Drive Pawn enables Replicates and Replicate Movement.
  4. With Client Side Simulation (on), clients apply the same hover forces to their copy between corrections so motion stays smooth; the owning client uses its own input and the other clients the replicated input. Turn it off for a strictly server-driven body.

Events (Grounded, Landing Impact, Thrust, Mode, Boost, Influence) fire on every machine, so VFX and audio work on all clients. Get Input returns the input in effect on the calling machine.

NoteClient-side prediction with rewind is not part of HoverDrive: under high latency the owning client feels its input after a round trip, smoothed by the engine's physics replication. For a custom component owner that is not a pawn, input is taken on the server only.

15. Debugging

Console variable HoverDrive.Debug (development builds; nothing is drawn in shipping builds):

ValueDraws
0Off (default).
1Hover rays (green = ground, cyan = liquid, red = out of range), impact points, yellow force arrows per point, centre of mass, velocity (blue), ground normal (magenta), wind (orange).
2Everything above plus on-screen telemetry per craft (mode, state, speeds, altitude, points, energy, thrust, gravity, volumes).

The per-component property Draw Debug shows level 2 for one craft without the console.

Input reference

Component input nodes: Set Throttle Input, Set Strafe Input, Set Yaw Input, Set Lift Input, Set Pitch Input, Set Roll Input (-1..1), Set Boost Input, Set Drift Input, Set Air Brake Input (held), Set Input (whole FHoverDriveInput, for AI or replays), Clear Input, Get Input. Default pawn bindings:

MappingKeyboardGamepad
HoverDrive_ThrottleW / S, Up / DownRight trigger / left trigger
HoverDrive_YawA / D, Left / RightLeft stick X
HoverDrive_StrafeQ / ERight stick X
HoverDrive_LiftSpace / Left CtrlRight stick Y
HoverDrive_PitchR (nose up) / FLeft stick Y (push = nose down)
HoverDrive_RollZ / CLeft / right shoulder
HoverDrive_BoostLeft ShiftFace button bottom
HoverDrive_DriftLeft AltFace button right
HoverDrive_AirBrakeXFace button left
HoverDrive_ToggleFlightTFace button top

C++

#include "HoverDriveComponent.h"
#include "HoverDrivePawn.h"

// Drive any pawn that has a Hover Drive component
if (UHoverDriveComponent* Hover = FindComponentByClass<UHoverDriveComponent>())
{
    Hover->SetThrottleInput(1.f);
    Hover->SetYawInput(-0.4f);
    Hover->SetBoostInput(true);

    const FHoverDriveTelemetry T = Hover->GetTelemetry();
    UE_LOG(LogTemp, Log, TEXT("%.0f km/h, %.0f cm above ground"), T.SpeedKmh, T.AltitudeAboveGround);
}

// In your own physics pawn's constructor (HoverDrive is a UHoverDriveComponent* UPROPERTY)
HoverDrive = CreateDefaultSubobject<UHoverDriveComponent>(TEXT("HoverDrive"));
HoverDrive->HoverPoints.Add(FHoverDrivePoint(FVector( 120.f,  60.f, -30.f)));
HoverDrive->HoverPoints.Add(FHoverDrivePoint(FVector( 120.f, -60.f, -30.f)));
HoverDrive->HoverPoints.Add(FHoverDrivePoint(FVector(-120.f,   0.f, -30.f)));
HoverDrive->BankingTarget = VisualMesh;

// React to landings (BeginPlay); HandleLanding is a UFUNCTION(float ImpactSpeed, FVector Location)
HoverDrive->OnLandingImpact.AddDynamic(this, &AMyCraft::HandleLanding);

Classes: UHoverDriveComponent, AHoverDrivePawn, AHoverDriveInfluenceVolume. Types: FHoverDrivePoint, FHoverDrivePointState, FHoverDriveSurfaceRule, FHoverDriveInput, FHoverDriveInfluence, FHoverDriveTelemetry, EHoverDriveMode, EHoverDriveAltitudeHold.

Troubleshooting

SymptomCause and fix
The craft just fallsThe physics body is not simulating, or the hover traces do not hit: check Simulate Physics, that the floor blocks the Trace Channel (Visibility by default), and that the points are within Max Hover Distance. HoverDrive.Debug 1 shows red rays when nothing is hit. The log warns once when there is no physics target.
It bouncesRaise Spring Damping (8-12) or lower Spring Stiffness.
It hovers lower than Hover HeightThe springs hold the exact height when every point is grounded and carries its share; a point hanging off an edge, strong wind or lift shifts it. Raise Spring Stiffness for a stiffer hold and keep the points at the bottom of the hull (Offset Z).
It flips on slopes or wallsLower Max Slope Angle, raise Auto Level Strength, or turn off Align To Ground.
It slides like on iceRaise Lateral Grip; check a surface rule with a low Drag Scale.
Keys do nothingThe pawn must be possessed by a player controller. If your project routes input differently (for example Enhanced Input actions only), turn off Use Default Input Bindings and call the input functions from your own input events.
Clients stutterKeep Client Side Simulation on and make sure the pawn replicates movement (the Hover Drive Pawn does).

Credits

© 2026 Alpha XP — alphaxp.net · Support: support@alphaxp.net. Built for Unreal Engine 4.27 and 5.8.