trigger_catapult
trigger_catapult
is a brush entity available in Portal 2,
Team Fortress 2, and
Garry's Mod.
An entity named trigger_catapult
is also available in Alien Swarm: Reactive Drop, but it seems to be a different entity with different functionality.
Entity description
It is used to launch the player or other objects into the air. Its ability to set an entity's flying direction or target, to consider their current velocity and — in the case of players — to supress their controls makes it a powerful tool to contol how they will fly and thus where they will land.
The simplest way to configure a trigger_catapult is to only set the Launch target keyvalue to the name of an info_target which is positioned at the location that the player or object should fly to. With this set, the Launch direction keyvalue is then ignored and the two speed keyvalues determine the flying height, where typically a higher speed flattens the flinging arc and a lower speed steepens it.
If a Launch target is set and an object touches the trigger_catapult, the game calculates the time in which the object should reach the target by dividing the initial distance between the two by the appropriate speed keyvalue (which is why the game crashes if that speed happens to be zero): time = distance / speed. Based on this time, the game shoots the object in a direction such that it reaches the target in the calculated time. That's why the height depends on the initial speed. The speed which the game wants to shoot the entity with is the base value for the threshold!
One can also leave the Launch Target blank and instead set the Launch direction. In this case, the speed keyvalues truely represent the speed at which an object will be launched with, except if the Launch direction keyvalue is set to Up (exactly -90 0 0) where the launch speed is 1.5 times as much. For a maximum height h in the case of Up, set the speed to sqrt(h) * 23.1.

In-game, the predicted flinging arcs can be viewed using the commands developer 1, ent_bbox trigger_catapult and ent_absbox trigger_catapult and be manipulated using commands such as ent_fire trigger_catapult addoutput "playerSpeed 450".
If Use Threshold Check is set to Yes, this trigger_catapult will only fling an entity if its velocity is at least speed * (1 - lowerThreshold) u/s but at most speed * (1 + upperThreshold) u/s, where speed is the keyvalue Player Speed or Physics Object Speed respectively.
They are typically used for Aerial Faith Plates to accomplish a kind of Fling that doesn't necessarily require the player to use portals.
KeyValues
- Player Speed (playerSpeed) <float>
- Physics Object Speed (physicsSpeed) <float>
- Speed at which to launch players / physics objects, respectively (u/sec). With a launch target, this speed refers only to the x-y-plane (!) and setting it to 0 will crash the game on the next use!
- Use Threshold Check (useThresholdCheck) <boolean>
- If set to yes the player/object will only be catapulted if his/its speed is within the limits specified in the keyvalues for lower and upper threshold.
- Entry Angle Tolerance (entryAngleTolerance) <float>
- Flung object's velocity must be pointing this much at the target. Specify a value between [-1...1] 1 means exactly, 0 means within 180 degrees -1 means any angle is accepted. This is only used if Use Threshold Check is set to yes.
- Use Exact Velocity (useExactVelocity) <boolean>
- Try to fling exactly at the speed specified - this prevents the added upward velocity from a launch target.
- Exact Solution Method (exactVelocityChoiceType) <choices>
- Using exact velocity generates two correct solutions. Use this to force which one you choose.
- 0 : Best
- 1 : Solution One
- 2 : Solution Two
- Lower Threshold (lowerThreshold) <float>
- Flung object must be within this percentage value in order to activate fling. The percentage specified is subtracted from the speed set in the keyvalue Player Speed. Specify a value between [0...1] (default is .15) This is only used if Use Threshold Check is set to yes.
- Upper Threshold (upperThreshold) <float>
- Flung object must be within this percentage value in order to activate fling. The percentage specified is added to the speed set in the keyvalue Player Speed. Specify a value between [0...1] (default is .30) This is only used if Use Threshold Check is set to yes.

- Launch direction (launchDirection) <angle>
- Direction to launch the player in.
- Launch target (launchTarget) <targetname>
- Entity to try to 'hit' when we're launched.
- Only check velocity (onlyVelocityCheck) <boolean>
- Only check velocity of the touching object - don't actually catapult it. Use in conjunction with OnCatapulted to create velocity checking triggers. Only works when Use Threshhold Check is enabled.
- Apply angular impulse (applyAngularImpulse) <boolean>
- If a random angular impulse should be applied to physics objects being catapulted.
- Air Control SupressionTime (AirCtrlSupressionTime) <float>
- [Launch by target only!] If greater than zero, supress player aircontrol for this number (in seconds). If less than zero use the default (quarter second).

- The supression remains active even if the player has already landed.
- The supression concerns player controls. Funnelling is still possible, i.e. placing a portal close to the target and looking at it may still massively manipulate the player's flight.
- Use Absolute Threshold Check ([todo internal name (i)]) <boolean> (only in
)
- If true, the threshold values represent actual velocities instead of a percentage
|
Flags
|
Inputs
|
Outputs
- OnCatapulted
- The object has been launched.
|