Change how a throw feels¶
How far a throwable flies, how hard it arcs, whether it bounces or breaks, and what the camera does while you line the shot up: all of it is Details panel fields on one Data Asset. You change how a throw feels by opening that asset and typing numbers. No graph.
The six shipped throwables live in Content/TheLastTemplate/Blueprints/DataAssets/Throwables/Childs/. They are named DA_Throwble_*, missing an "a", in the shipped project. Open one and everything on this page is in front of you.
If you want to know what the four assets behind a throwable are and what happens on impact, read How throwables work first. This page only covers the feel.
What actually differs between the six¶
Almost nothing. Two fields carry the whole difference:
| Data Asset | Launch Speed |
Destroy on Impact |
Bounce Sound and Hit Sound |
|---|---|---|---|
DA_Throwble_Bomb |
1700 |
ticked | SC_BreakGlass |
DA_Throwble_Bottle |
1700 |
ticked | SC_BreakGlass |
DA_Throwble_Brick |
1200 |
unticked | SC_BrickHit |
DA_Throwble_Can |
1400 |
unticked | SC_MetalHit |
DA_Throwble_Molotov |
1700 |
ticked | SC_BreakGlass |
DA_Throwble_NailBomb |
1700 |
ticked | SC_MetalHit |
Every other field on this page holds the same value on all six. So if a change you make feels wrong on one throwable, it will feel wrong on the other five too until you edit them as well.
Flight¶
Three fields decide the shape of the arc. They are pushed onto the projectile movement of the thrown actor the moment it spawns.
| Field | What it does | Shipped |
|---|---|---|
Launch Speed |
Speed the throwable leaves your hand at, in centimetres per second | 1200 to 1700 |
Pitch Offset |
Degrees added above your aim line, so the throw lobs instead of going flat | 8 |
Gravity Scale |
Multiplier on gravity while it flies. Above 1 it drops faster |
1.25 |
Launch Speed is the one to reach for first. It moves distance and flight time together and you feel it immediately. Only touch Pitch Offset when the throw goes where you want but looks too flat or too high, and only touch Gravity Scale when you want the object to feel heavier or lighter than the speed alone suggests.
The trajectory arc is drawn from the same three numbers, so it stays honest whatever you set.
Landing¶
| Field | What it does | Shipped |
|---|---|---|
Bounciness |
How much speed survives a bounce. 0 sticks, 1 keeps everything |
0.15 |
Friction |
How fast it loses speed sliding along a surface | 0.6 |
Collision Radius |
Radius in centimetres of the sphere that detects the impact | 7 |
Destroy on Impact |
Whether the first bounce ends the throw | ticked on four of six |
Destroy on Impact is the one that changes the object into a different kind of thing. Ticked, the throwable fires its payloads on the first bounce and is removed: that is the bomb, the nail bomb, the molotov and the bottle. Unticked, it keeps bouncing and rolling and the object is left lying in your level: that is the brick and the can.
Collision Radius at 7 is small on purpose. A large radius makes a throwable detonate early on door frames and railings it should have flown past.
The aiming camera¶
Raise a throw and the camera stops using the resting values and uses these instead. They sit on the throwable's Data Asset, not on the character, so each throwable could frame its own aim. All six ship with the same numbers.
| Field | What it does | Shipped |
|---|---|---|
Spring Arm Right |
Where the camera sits while aiming. Y across the shoulder, Z up and down | (0, -60, 0) |
Spring Arm Right Crouching |
The same thing, used while crouched | (0, -60, -35) |
Zoom Value |
Spring arm length while aiming. Smaller means closer to the shoulder | 110 |
Camera FOV |
Field of view while aiming | 90 |
The throw camera pushes to -60 on Y and back out to 110 while a gun pulls to the other shoulder and in close. That is deliberate: when you throw, you need to see the landing spot more than you need to see the character. If you copy camera numbers from a weapon Data Asset onto a throwable, expect the arc to disappear behind the shoulder.
While you aim¶
| Field | What it does | Shipped |
|---|---|---|
Aim Movement Speed |
Movement speed multiplier while aiming a throw | 0.55 |
Enable Aim Immersive Camera |
Turns the slow aim sway on | ticked |
Aim Camera Intensity |
How strong that sway is | 1.5 |
0.55 is slower than the guns, which use 0.65. Lining up a throw is meant to commit you more than raising a pistol does. Untick Enable Aim Immersive Camera if you want a dead still camera, and Aim Camera Intensity stops mattering.
The trajectory arc¶
Show Trajectory is a single tick box on the Data Asset, on for all six. Untick it and that throwable is aimed blind, with no arc drawn. It is a good way to make one item harder to use than the rest.
The arc itself is drawn by Content/TheLastTemplate/Blueprints/Throwables/BP_TrajectoryVisualizer. Open it and its Details panel gives you the shape:
| Field | What it does | Shipped |
|---|---|---|
Max Segments |
How many pieces the arc can use, so how far ahead it draws | 80 |
Segment Length |
Length in centimetres of one step of the simulated path | 20 |
Start Width |
Thickness of the tube at the hand end | 0.15 |
End Width |
Thickness at the far end | 0.15 |
Eighty segments of twenty centimetres is about sixteen metres of drawn path. If your throwable flies further than that, the arc stops before the landing point. Raise Max Segments rather than Segment Length, because a longer step makes the curve visibly faceted.
Set End Width lower than Start Width for an arc that tapers away, which reads well when you want the far end to feel like a guess.
Restyling the arc¶
The tube mesh and its material are assigned from inside BP_TrajectoryVisualizer, so the way to restyle the arc without opening a graph is to edit the two assets in place:
Content/TheLastTemplate/Meshes/Misc/SM_ArcTubeis the tube. Replace its geometry and every segment follows.Content/TheLastTemplate/Materials/Effects/MI_ThrowArcis the material. It is a child ofM_ThrowArcand exposesIntensity, shipped2.5, andOpacity, shipped1.
Lower Intensity for an arc that does not glow through dark rooms. Lower Opacity for one you can see the level through.
Sounds¶
| Field | When it plays | Shipped |
|---|---|---|
Throw Sound |
As the throwable leaves your hand | empty on all six |
Bounce Sound |
When the flying throwable bounces off something | per throwable |
Hit Sound |
When the object lying in the level is knocked around | per throwable |
Hit Cosmetic Sound Threshold |
How hard that knock has to be before Hit Sound plays |
20000 |
Throw Sound is empty on every shipped throwable, so nothing plays on the swing today. The field works, it is simply not filled in. Drop a cue in it if you want one.
Bounce Sound and Hit Sound are two different moments and the shipped assets set them to the same cue. Bounce Sound belongs to the object while it is still flying under its own launch. Hit Sound belongs to the object afterwards, once it is a physics prop being kicked around, and that is where Hit Cosmetic Sound Threshold comes in: the impact has to be stronger than 20000 before the sound plays. That is what keeps a can from clicking on every tiny settle. Lower it and light taps become audible, raise it and only real impacts speak.
Animation and the hand¶
| Field | What it does | Shipped |
|---|---|---|
Throw Montage |
The animation played on the character | AM_Character_Throw |
Throwable Socket Name |
Socket the object is held on and thrown from | ThrowableSocket |
All six throwables share AM_Character_Throw. The object does not leave the hand when the montage ends, it leaves on an anim notify inside the montage called Release. If a throw looks late or early, move that notify, do not change Launch Speed to compensate.
ThrowableSocket is a socket on the skeleton Content/TheLastTemplate/Meshes/Characters/S_HumanoidCharacter. Type a socket name that does not exist there and the object is held at the character's feet.
Give a throwable its own montage by pointing Throw Montage at your own asset. Copy the Release notify onto it, otherwise the object is never let go.
Worked example: a heavy lob against a light long throw¶
Duplicate DA_Throwble_Brick twice and give each copy one of these sets.
A heavy short lob, for something you drop over a wall rather than throw across a street:
| Field | Value |
|---|---|
Launch Speed |
900 |
Pitch Offset |
20 |
Gravity Scale |
2.0 |
Bounciness |
0.05 |
Friction |
0.9 |
Destroy on Impact |
unticked |
A light long throw, for something you want to skitter down a corridor and pull attention far away:
| Field | Value |
|---|---|
Launch Speed |
2200 |
Pitch Offset |
4 |
Gravity Scale |
0.9 |
Bounciness |
0.5 |
Friction |
0.25 |
Destroy on Impact |
unticked |
Also raise Max Segments on BP_TrajectoryVisualizer before you test the second one, or its arc will be cut off well short of where it lands.