func_tracktrain
Not to be confused with func_tanktrain.
Class hierarchy |
---|
CFuncTrackTrain |
trains.cpp
|
func_tracktrain
is a brush entity available in all Source games. It functions as a moving platform that the player can ride. It follows a path of path_track
entities.
Note:Unless the
Fixed Orientation
flag is set, build your train so that the front of the train is facing down the X axis. (This means that the front of the train is visible in the front view, etc.) When it spawns it will automatically rotate to face the next path_track
on the path.Note:Tracktrains only update their movement direction 10 times per second. At higher speeds, this can result in them overshooting the track, especially with sharp turns. The older
func_train
entity is not affected by this issue, so it may be a suitable alternative for high-speed objects.Bug:Due to poor coding, the
Reverse
and StartBackward
may not function correctly if the New Train Speed
property in the involved path_track
entities is set to 0. The train may fail to reverse, jamming in place or moving in the wrong direction. To solve this issue, some or all of the path_tracks
must have their New Train Speed
variable set to a non-zero value. [todo tested in?]Bug:Trains stop short at a distance from their targets, regardless of speed. The higher the speed, the further away it will stop from the path_track. At low speeds, this is negligible. [todo tested in?]
Contents
Keyvalues
- Name
(targetname)
<string> - The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g.
parentname
ortarget
).
Also displayed in Hammer's 2D views and Entity Report.See also: Generic Keyvalues, Inputs and Outputs available to all entities
- First Stop Target
(target)
<targetname> - The name of the first
path_track
in the train's path. The train will spawn at thispath_track
. It will also turn to face the direction indicated by the "Orientation Type" setting. - Max Speed (units/second)
(startspeed)
<integer> - The maximum speed that this train can move. Any speeds applied to this train, such as by
path_track
s orSetSpeed
inputs, will be clipped to this maximum value. - Initial Speed (units/second)
(speed)
<integer> - The speed that the train will move at after it spawns, 0 = stopped.
- Change Velocity
(velocitytype)
<choices> - The method through which this train changes its velocity as it moves along the path.
- 0 : Instantaneously
- 1 : Linear blend
- 2 : Ease in/ease out
- Change angles
(orientationtype)
<choices> - The method through which this train changes its orientation as it moves along the path.
- 0 : Never (always fixed orientation)
- 1 : Near paths
- 2 : Linear blend
- 3 : Ease in/ease out
- Distance Between the Wheels
(wheels)
<integer> - Used for turning and stopping.
- Tip:Increase the value for smoother turns.
- Height above track
(height)
<integer> - The height above the track that this train moves.
- Bank Angle on Turns
(bank)
<string> - The angle at which the train will "bank" or tilt when approaching a turn. Use positive or negative angle numbers close to 0 (i.e., between -5 and +5, depending on left or right) to achieve realistic tilt angles.
- Damage on Crush
(dmg)
<integer> - The amount of damage this train does to entities that block it.
- Minimum Light Level
(_minlight)
<string> - The minimum level of ambient light that hits this brush.
- Move Sound
(MoveSound)
<sound> - A sound that is played (and looped) while the train is moving.
- Move Ping Sound
(MovePingSound)
<sound> - A sound that is played more frequently as the train speeds up.
- Start Sound
(StartSound)
<sound> - A sound played when the train starts moving.
- Stop Sound
(StopSound)
<sound> - A sound played when the train stops moving.
- Volume (10 = loudest)
(volume)
<integer> - Volume of the sound when the train is moving.
- Min pitch (1-255, 100 = normal)
(MoveSoundMinPitch)
<integer> - The sound pitch value that the train will approach as it comes to a stop.
- Max pitch (1-255, 100 = normal)
(MoveSoundMaxPitch)
<integer> - The sound pitch value that the train will approach as it approaches its max speed (or 1000 inches/second if the "Use max speed for pitch shifting move sound" flag is not set).
- Min move sound interval
(MoveSoundMinTime)
<float> - Minimum interval at which to play the move ping sound.
- Max move sound interval
(MoveSoundMaxTime)
<float> - Maximum interval at which to play the move ping sound.
- Manual Train Speed
(manualspeedchanges)
<boolean> - Train Speed is controlled through IO, handles accel, decel times.
- Manual Accel Speed
(manualaccelspeed)
<float> - Units per second to accelerate to target speed.
- Manual Decel Speed
(manualdecelspeed)
<float> - Units per second to decelerate to target speed.
Note:The above three keyvalues are !FGD in Left 4 Dead and later, but appear to still exist in the engine.
Distance between wheels is the distance in Hammer Units between the front axle and rear axle of your train. The rear axle moves the train and stays on the track. The front axle turns as it approaches path_tracks and does not stay on the track.
Flags
- [
1
] : No Pitch (X-rot) - [
2
] : No User Control - [
8
] : Passable
Disables collisions on the object. - [
16
] : Always Fixed Orientation - [
128
] : Rideable Train
Does not knock entities off or cause damage. - [
256
] : Use max speed for pitch shifting move sound - [
512
] : Not blockable by players
Inputs
SetSpeed
<float>- Set the speed of the train, as a ratio of max speed [0, 1]
SetSpeedDir
<float>- Set the speed of the train, as a ratio of max speed. Negative values reverse the direction [-1, 1]
SetSpeedReal
<float>- Set the speed of the train. Must be a positive value from 0 to max speed.
SetSpeedDirAccel
<float> (not in )- Accel/Decel to the specified speed, as a ratio of max speed. Negative values reverse the direction [-1, 1]
SetSpeedForwardModifier
<float> (removed since )- Applies the given modifier to all forward speeds. [0, 1]
TeleportToPathTrack
<targetname> (removed since )- Teleport the train to the designated path track. This can be in a new path.
- Note:The above three inputs appear to have been added to Source 2007 games post-release for TF2's Payload mode, but did not make it into later games, resulting in their apparent "removal". However,
SetSpeedDirAccel
did later get ported in Left 4 Dead 2.
MoveToPathNode
<targetname> (in all games since )- Move the train to a specific path_track, stopping when it gets there. Must be in the same path.
TeleportToPathNode
<targetname> (in all games since )- Teleport to another path_track and stop the train. This can be in a new path.
SetMaxSpeed
<float> (in all games since )- Set a new max speed for the train.
Stop
- Stop the train.
StartForward
- Start the train moving forward.
StartBackward
- Start the train moving backward.
- Bug:If the train's corresponding path_tracks do not have "New Train Speed" set to a nonzero number, StartBackward will exhibit undesired behavior including the train freezing or moving in the wrong direction. This bug can be a pain if the train needs to ride through the path_track again at a different speed. This can be fixed by firing an "addOutput speed '#'" input at the path_track in question. [todo tested in?]
Resume
- Resume the train moving in the current direction after it was stopped via the
Stop
orToggle
input.
Reverse
- Reverse the direction of the train.
Toggle
- Toggle the train between start and stop.
Outputs
OnStart
- Fired when the train starts moving in either direction.
OnNextPoint
- Fires continuously every tick when the train is currently moving to its next destination.
- Warning:In the default FGD, this is incorrectly listed as "OnNext" and has an incorrect description ("Fires when this train picks a new point to move towards (and just after OnStart)")