Skip to main content
Version: latest - a1.7.0 βš–οΈ

πŸš™ Vehicle

Vehicles are wheeled entities which Characters can possesses and drive.

info

🟦 Authority: This class can only be spawned on Server.

⏬ Inheritance: This class inherits from Actor and Paintable.

Any Skeletal Mesh can be used to create a Vehicle, although only Skeletal Meshes with Wheels bones can use the built-in feature of animated Wheels.

tip

Please take a look at our Default's Vehicle package with all built-in Vehicles already properly configured and ready to use: https://github.com/nanos-world/nanos-world-vehicles.

Monster Truckgetting-started/tutorials-and-examples/monster-truck

Usage​

Server/Index.lua
-- Spawns a Pickup Vehicle
local vehicle = Vehicle(location or Vector(), rotation or Rotator(), "nanos-world::SK_Pickup", CollisionType.Normal, true, false, true, "nanos-world::A_Vehicle_Engine_10")

-- Configure it's Engine power and Aerodynamics
vehicle:SetEngineSetup(700, 5000)
vehicle:SetAerodynamicsSetup(2500)

-- Configure it's Steering Wheel and Headlights location
vehicle:SetSteeringWheelSetup(Vector(0, 27, 120), 24)
vehicle:SetHeadlightsSetup(Vector(270, 0, 70))

-- Configures each Wheel
vehicle:SetWheel(0, "Wheel_Front_Left", 27, 18, 45, Vector(), true, true, false, false, false, 1500, 3000, 1000, 1, 3, 20, 20, 250, 50, 10, 10, 0, 0.5, 0.5)
vehicle:SetWheel(1, "Wheel_Front_Right", 27, 18, 45, Vector(), true, true, false, false, false, 1500, 3000, 1000, 1, 3, 20, 20, 250, 50, 10, 10, 0, 0.5, 0.5)
vehicle:SetWheel(2, "Wheel_Rear_Left", 27, 18, 0, Vector(), false, true, true, false, false, 1500, 3000, 1000, 1, 4, 20, 20, 250, 50, 10, 10, 0, 0.5, 0.5)
vehicle:SetWheel(3, "Wheel_Rear_Right", 27, 18, 0, Vector(), false, true, true, false, false, 1500, 3000, 1000, 1, 4, 20, 20, 250, 50, 10, 10, 0, 0.5, 0.5)

-- Adds 6 Doors/Seats
vehicle:SetDoor(0, Vector( 50, -75, 105), Vector( 8, -32.5, 95), Rotator(0, 0, 10), 70, -150)
vehicle:SetDoor(1, Vector( 50, 75, 105), Vector( 25, 50, 90), Rotator(0, 0, 0), 70, 150)
vehicle:SetDoor(2, Vector( -90, -75, 130), Vector( -90, -115, 155), Rotator(0, 90, 20), 60, -150)
vehicle:SetDoor(3, Vector( -90, 75, 130), Vector( -90, 115, 155), Rotator(0, -90, 20), 60, 150)
vehicle:SetDoor(4, Vector(-195, -75, 130), Vector(-195, -115, 155), Rotator(0, 90, 20), 60, -150)
vehicle:SetDoor(5, Vector(-195, 75, 130), Vector(-195, 115, 155), Rotator(0, -90, 20), 60, 150)

-- Make it ready (so clients only create Physics once and not for each function call above)
vehicle:RecreatePhysics()

Constructor Parameters​

TypeNameDefault
VectorlocationVector(0, 0, 0)
RotatorrotationRotator(0, 0, 0)
SkeletalMesh Assetasset
CollisionTypecollision_typeCollisionType.Normal
booleangravity_enabledtrue
booleanauto_create_physicstrue
booleanauto_unfliptrue
Sound Asset or Special Pathengine_sound_assetnanos-world::A_Vehicle_Engine_01
Sound Asset or Special Pathhorn_sound_assetnanos-world::A_Vehicle_Horn_Toyota
Sound Asset or Special Pathbrake_sound_assetnanos-world::A_Vehicle_Brake
Sound Asset or Special Pathengine_start_sound_assetnanos-world::A_Car_Engine_Start
Sound Asset or Special Pathvehicle_door_sound_assetnanos-world::A_Vehicle_Door
booleanauto_start_enginetrue

Functions​

Inherited Actor Functions
ReturnsNameDescription
AddImpulseApplies a Force in world space to this Actor
AttachToAttaches this Actor to another Actor
DestroyDestroys this Actor
DetachDetaches this Actor if attached
SetCollisionSets this Actor's collision type
SetForceAdds a permanent force to this Actor
SetGravityEnabledSets whether gravity is enabled on this Actor
SetVisibilitySets the Actor visibility
SetHighlightEnabledSets whether the highlight is enabled on this Actor, and which highlight index to use
SetOutlineEnabledSets whether the outline is enabled on this Actor, and which outline index to use
SetLifeSpanSets the time (in seconds) before this Actor is destroyed
SetLocationSets this Actor's location in the game world
SetNetworkAuthoritySets the Player this Actor will have its physics calculated on Network Authority
SetRelativeLocationSets this Actor's relative location in local space
SetRelativeRotationSets this Actor's relative rotation in local space
SetRotationSets this Actor's rotation in the game world
SetScaleSets this Actor's scale
SetValueSets a value in this Actor, which can be accessed by any package
TranslateToSmoothly moves this Actor to the specified location
RotateToSmoothly rotates this Actor to the specified angle
booleanHasNetworkAuthorityGets if the LocalPlayer is currently the Network Authority of this Actor
booleanHasAuthorityGets if this Actor was spawned by the client side
booleanIsBeingDestroyedGets if this Actor is being destroyed
booleanIsGravityEnabledGets whether gravity is enabled on this Actor
booleanIsVisibleGets whether this actor is Visible or not
booleanIsInWaterGets if this Actor is in water
booleanIsNetworkDistributedGets if this Actor is currently Network Distributed
booleanIsValidReturns if this Actor is valid (i.e. not destroyed)
tableGetAttachedEntitiesGets all Actors attached to this Actor
anyGetAttachedToGets the Actor this Actor is attached to
tableGetBoundsGets this Actor's bounds
numberGetCollisionGets this Actor's collision type
numberGetIDGets the universal network ID of this Actor
VectorGetLocationGets this Actor's location in the game world
RotatorGetRotationGets this Actor's angle in the game world
VectorGetForceGets this Actor's scale
VectorGetScaleGets this Actor's scale
stringGetTypeGets the type of this Actor
anyGetValueGets a value stored on this Actor at the given key
VectorGetVelocityReturns this Actor's current velocity
stringAddActorTagAdds an Unreal Actor Tag to this Actor
stringRemoveActorTag`Remove an Unreal Actor Tag from this Actor
tableGetActorTagsGets all Unreal Actor Tags from this Actor
functionSubscribeSubscribes to an Event
UnsubscribeUnsubscribes from an Event
Inherited Paintable Functions
ReturnsNameDescription
SetMaterialSets the material at the specified index of this Actor
SetMaterialFromWebUISets the material at the specified index of this Actor to a WebUI object
SetMaterialFromSceneCaptureSets the material at the specified index of this Actor to a SceneCapture object
ResetMaterialResets the material from the specified index to the original one
SetMaterialColorParameterSets a Color parameter in this Actor’s material
SetMaterialScalarParameterSets a scalar parameter in this Actor’s material
SetMaterialTextureParameterSets a texture parameter in this Actor's material to an image on disk
SetMaterialVectorParameterSets a Vector parameter in this Actor’s material
SetPhysicalMaterialOverrides this Actor's Physical Material with a new one
ReturnsNameDescription
AddStaticMeshAttachedSpawns and Attaches a StaticMesh into this Vehicle
HornStarts or stops the vehicles horn
RecreatePhysicsRecreate the Vehicle Physics
RemoveStaticMeshAttachedRemoves, if existing, a StaticMesh from this Vehicle given it's custom ID
RemoveAllStaticMeshesAttachedRemoves all StaticMeshes attached
SetAutoStartEngineSets if the Engine auto starts when the driver enters the Vehicle
SetEngineStartedStarts/Stops the Engine
SetDifferentialSetupConfigures the Vehicle Differential
SetEngineSetupConfigures the Vehicle Engine
SetAerodynamicsSetupConfigures the Vehicle Aerodynamics Settings
SetTransmissionSetupConfigures the Vehicle Transmission
SetWheelConfigures a Vehicle Wheel
SetDoorAdds a Door
SetSteeringWheelSetupConfigures where the Steering Wheel is located
SetHeadlightsSetupConfigures the Headlights Offset and Color
SetTaillightsSetupConfigures the Taillights Offset
stringGetAssetNameGets the Asset name
CharacterGetPassengerGets a passengers at an index
tableGetPassengersGets all passengers
numberGetRPMGets the current RPM
numberGetGearGets the current Gear

Events​

Inherited Actor Events
NameDescription
DestroyTriggered when an Actor is destroyed
SpawnTriggered when an Actor is spawned/created
ValueChangeTriggered when an Actor has a value changed with :SetValue()
NameDescription
HornWhen Vehicle honks
HitWhen Vehicle hits something
CharacterEnteredWhen a Character enters the Vehicle
CharacterLeftWhen Character leaves the Vehicle
CharacterAttemptEnterWhen a Character attempts to Enter the Vehicle
CharacterAttemptLeaveWhen a Character attempts to Leave the Vehicle

Functions Detailed​

AddStaticMeshAttached​

Spawns and Attaches a StaticMesh into this Character in a Socket with relative Location and Rotation. Uses a custom ID to be used for removing it further

For customizing the Materials specific of a StaticMeshAttached, please use the following syntax as the id in the Paintable methods: attachable///[ATTACHABLE_ID]/[PARAMETER_NAME], where [ATTACHABLE_ID] is the ID of the Attachable, and [PARAMETER_NAME] is the name of the parameter you want to change.

my_vehicle:AddStaticMeshAttached(id, static_mesh_path, socket, relative_location, relative_rotation)
TypeParameterDefault ValueDescription
stringid
stringstatic_mesh_path
stringsocket
Vectorrelative_locationVector()
Rotatorrelative_rotationRotator()

Horn​

Starts or stops the vehicles horn

my_vehicle:Horn(enable_horn)
TypeParameterDefault ValueDescription
booleanenable_horn

RecreatePhysics​

Recreate the Vehicle Physics

Call this after configuring the vehicle if using auto_create_physics= false

my_vehicle:RecreatePhysics()

RemoveStaticMeshAttached​

Removes, if existing, a StaticMesh from this Vehicle given it's custom ID

my_vehicle:RemoveStaticMeshAttached(id)
TypeParameterDefault ValueDescription
stringid

RemoveAllStaticMeshesAttached​

Removes all StaticMeshes attached

my_vehicle:RemoveAllStaticMeshesAttached()

SetAutoStartEngine​

Sets if the Engine auto starts when the driver enters the Vehicle

my_vehicle:SetAutoStartEngine(auto_start)
TypeParameterDefault ValueDescription
booleanauto_start

SetEngineStarted​

Sets if the Engine is turned off/on (this will affect Lights, Sounds and ability to Throttle)

my_vehicle:SetEngineStarted(started)
TypeParameterDefault ValueDescription
booleanstarted

SetDifferentialSetup​

Configures the Vehicle Differential

my_vehicle:SetDifferentialSetup(differential_type, front_rear_split, front_left_right_split, rear_left_right_split, center_bias, front_bias, rear_bias)
TypeParameterDefault ValueDescription
DifferentialTypedifferential_typeLimitedSlip_4W
numberfront_rear_split0.45Ratio of torque split between front and rear.
>0.5 means more to front
<0.5 means more to rear
(works only with 4W type)
numberfront_left_right_split0.5Ratio of torque split between front-left and front-right.
>0.5 means more to front-left
<0.5 means more to front-right
(works only with 4W and LimitedSlip_FrontDrive)
numberrear_left_right_split0.5Ratio of torque split between rear-left and rear-right
>0.5 means more to rear-left
<0.5 means more to rear-right
(works only with 4W and LimitedSlip_RearDrive)
numbercenter_bias1.3Maximum allowed ratio of average front wheel rotation speed and rear wheel rotation speeds
Acceptable range: 1 .. infinite
(works only with LimitedSlip_4W)
numberfront_bias1.3Maximum allowed ratio of front-left and front-right wheel rotation speeds
Acceptable range: 1 .. infinite
(works only with LimitedSlip_4W, LimitedSlip_FrontDrive)
numberrear_bias1.3Maximum allowed ratio of rear-left and rear-right wheel rotation speeds
Acceptable range: 1 .. infinite
(works only with LimitedSlip_4W, LimitedSlip_FrontDrive)

SetEngineSetup​

Configures the Vehicle Engine (Torque, RPM, Braking)

my_vehicle:SetEngineSetup(max_torque, max_rpm, idle_rpm, brake_effect, rev_up_moi, rev_down_rate)
TypeParameterDefault ValueDescription
numbermax_torque700Max Engine Torque (Nm) is multiplied by TorqueCurve
numbermax_rpm5700Maximum revolutions per minute of the engine
numberidle_rpm1200Idle RMP of engine then in neutral/stationary
numberbrake_effect0.05Braking effect from engine, when throttle released
numberrev_up_moi5Affects how fast the engine RPM speed up
numberrev_down_rate600Affects how fast the engine RPM slows down

SetAerodynamicsSetup​

Configures the Vehicle Aerodynamics Settings

my_vehicle:SetAerodynamicsSetup(mass, drag_coefficient, vehicle_chassis_width, vehicle_chassis_height, vehicle_downforce_coefficient)
TypeParameterDefault ValueDescription
numbermass1500Mass of the vehicle chassis
numberdrag_coefficient0.3Force resisting forward motion at speed
numbervehicle_chassis_width180Chassis width used for drag force computation (cm)
numbervehicle_chassis_height140Chassis height used for drag force computation (cm)
numbervehicle_downforce_coefficient0.3Force pressing vehicle into ground at speed

SetTransmissionSetup​

Configures the Vehicle Transmission

my_vehicle:SetTransmissionSetup(transmission_final_ratio, transmission_change_up_rpm, transmission_change_down_rpm, transmission_gear_change_time, transmission_efficiency)
TypeParameterDefault ValueDescription
booleantransmission_final_ratio3.08The final gear ratio multiplies the transmission gear ratios
numbertransmission_change_up_rpm4500Engine Revs at which gear up change ocurrs
numbertransmission_change_down_rpm2000Engine Revs at which gear down change ocurrs
numbertransmission_gear_change_time0.4Time it takes to switch gears (seconds)
numbertransmission_efficiency0.94Mechanical frictional losses mean transmission might operate at 0.94 (94% efficiency)

SetWheel​

Configures a Vehicle Wheel

tip

Wheels can be updated in runtime by calling SetWheel again, you can for example change the suspension high or disable a wheel totally by toggling affected_by_engine off or setting radius to 0.

my_vehicle:SetWheel(index, bone_name, radius, width, max_steer_angle, offset, is_affected_by_engine, is_affected_by_brake, is_affected_by_handbrake, has_abs_enabled, has_traction_control_enabled, max_brake_torque, max_handbrake_torque, cornering_stiffness, side_slip_modifier, friction_force_multiplier, slip_threshold, skid_threshold, suspension_spring_rate, suspension_spring_preload, suspension_max_raise, suspension_max_drop, suspension_smoothing, suspension_damping_ratio, suspension_wheel_load_ratio, suspension_axis, suspension_force_offset)
TypeParameterDefault ValueDescription
numberindexIndex of the wheel (0-N). Set it in ASC order
stringbone_nameName of the bone to attach this wheel to
numberradius32Radius of the wheel
numberwidth20Width of the wheel
numbermax_steer_angle50Steer angle in degrees for this wheel
VectoroffsetVector(0, 0, 0)If bone_name is specified, offset the wheel from the bone's location. Otherwise this offsets the wheel from the vehicle's origin
booleanis_affected_by_enginetrueWhether engine should power this wheel
booleanis_affected_by_braketrueWhether brake should affect this wheel
booleanis_affected_by_handbraketrueWhether handbrake should affect this wheel
booleanhas_abs_enabledfalseAdvanced Braking System Enabled
booleanhas_traction_control_enabledfalseStraight Line Traction Control Enabled
numbermax_brake_torque1500Max brake torque for this wheel (Nm)
numbermax_handbrake_torque3000Max handbrake brake torque for this wheel (Nm). A handbrake should have a stronger brake torque than the brake
numbercornering_stiffness1000Tyre Cornering Ability
numberside_slip_modifier1Wheel Lateral Skid Grip Loss, lower number less grip on skid
numberfriction_force_multiplier2Friction Force Multiplier
numberslip_threshold20Wheel Longitudinal Slip Threshold
numberskid_threshold20Wheel Lateral Skid Threshold
numbersuspension_spring_rate250Spring Force (N/m)
numbersuspension_spring_preload50Spring Preload (N/m)
numbersuspension_max_raise10How far the wheel can go above the resting position
numbersuspension_max_drop10How far the wheel can drop below the resting position
numbersuspension_smoothing0Smooth suspension [0-off, 10-max] - Warning might cause momentary visual inter-penetration of the wheel against objects/terrain
numbersuspension_damping_ratio0.5Suspension damping, larger value causes the suspension to come to rest faster [range 0 to 1]
numbersuspension_wheel_load_ratio0.5Amount wheel load effects wheel friction.
- At 0 wheel friction is completely independent of the loading on the wheel (This is artificial as it always assumes even balance between all wheels)
- At 1 wheel friction is based on the force pressing wheel into the ground. This is more realistic.
- Lower value cures lift off over-steer, generally makes vehicle easier to handle under extreme motions.
Vectorsuspension_axisVector(0, 0, -1)Local body direction in which where suspension forces are applied (typically along -Z-axis)
Vectorsuspension_force_offsetVector(0, 0, 0)Vertical offset from where suspension forces are applied (along Z-axis)

SetDoor​

Adds a Door at OffsetLocation from root which will pose the Character at SeatLocation with SeatRotation rotation. LeaveLateralOffset is where the Character will be ejected when leaving it (e.g. -150 for left door or 150 for right door)

my_vehicle:SetDoor(seat_index, offset_location, seat_location, seat_rotation, trigger_radius, leave_lateral_offset)
TypeParameterDefault ValueDescription
numberseat_index
Vectoroffset_location
Vectorseat_location
Rotatorseat_rotation
numbertrigger_radius
numberleave_lateral_offset

SetSteeringWheelSetup​

Configures where the Steering Wheel is located, so Characters can grab it procedurally properly

my_vehicle:SetSteeringWheelSetup(location, radius)
TypeParameterDefault ValueDescription
Vectorlocation
numberradius

SetHeadlightsSetup​

Configures the Headlights Offset and Color.

my_vehicle:SetHeadlightsSetup(location, color)
TypeParameterDefault ValueDescription
Vectorlocation
ColorcolorColor(1, 0.86, 0.5)

SetTaillightsSetup​

Configures the Taillights Offset.

my_vehicle:SetTaillightsSetup(location)
TypeParameterDefault ValueDescription
Vectorlocation

GetAssetName​

Gets the Asset name

Returns string

my_vehicle:GetAssetName()

GetPassenger​

Gets a passenger from a seat

returns Character or nil if Seat is invalid or empty

my_vehicle:GetPassenger(seat)
TypeParameterDefault ValueDescription
numberseat

GetPassengers​

Gets all passengers

Returns table of Characters

my_vehicle:GetPassengers()

GetRPM​

Gets the current RPM

Returns number

my_vehicle:GetRPM()

GetGear​

Gets the current Gear

Returns number

my_vehicle:GetGear()

Events Detailed​

Horn​

Triggered when Vehicle honks

Vehicle.Subscribe("Horn", function(self, is_honking)

end)
TypeParameterDescription
Vehicleself
booleanis_honking

Hit​

Triggered when Vehicle hits something

Vehicle.Subscribe("Hit", function(self, impact_force, normal_impulse, impact_location, velocity)

end)
TypeParameterDescription
Vehicleself
numberimpact_forceThe intensity of the Hit normalized by the Vehicle's weight
Vectornormal_impulseThe impulse direction it hits
Vectorimpact_locationThe world 3D location of the impact
VectorvelocityThe Vehicle velocity at the moment it hits

CharacterEntered​

Triggered when a Character fully enters the Vehicle

Vehicle.Subscribe("CharacterEntered", function(self, character, seat)

end)
TypeParameterDescription
Vehicleself
Charactercharacter
numberseatThe seat index

CharacterLeft​

Triggered when a Character fully leaves the Vehicle

Vehicle.Subscribe("CharacterLeft", function(self, character)

end)
TypeParameterDescription
Vehicleself
Charactercharacter

CharacterAttemptEnter​

Triggered when a Character attempts to enter the Vehicle

Return false to prevent it

Vehicle.Subscribe("CharacterAttemptEnter", function(self, character, seat)

end)
TypeParameterDescription
Vehicleself
Charactercharacter
numberseatThe seat index

CharacterAttemptLeave​

Triggered when a Character attempts to enter the Vehicle

Return false to prevent it

Vehicle.Subscribe("CharacterAttemptLeave", function(self, character)

end)

TypeParameterDescription
Vehicleself
Charactercharacter