Spawn Object Attached (AN_TFA_SpawnObjectAttached)
Spawns an object and attaches it to a socket.
Asset path: /Game/InfimaGames/TacticalFPSAnimations/Common/Core/Animation/AN_TFA_SpawnObjectAttached
AN_TFA_SpawnObjectAttached is the notify to use when you want a temporary prop to appear and stay attached to the character mesh. It is especially handy for reload props, handheld devices, and other animation-driven cosmetic items that should remain socketed until another gameplay event removes or throws them.
Quick Navigation
Purpose
Common uses include:
Temporary props during an animation, such as a magazine in the hand
Cosmetic handheld or body-mounted attachments, such as tools or devices
Owner Requirement
This notify only works when the active animation is playing on a mesh owned by BP_TFA_BaseCharacter.
Quick Setup
Plan the Cleanup
This notify only spawns and attaches the prop, so you still need a cleanup plan. You can destroy the prop manually, transition into Throw Physics Object (AN_TFA_ThrowPhysicsObject), or rely on perspective-switch cleanup because the prop gets tagged as DisposableItem.
Notify Blueprint Flow
This notify is implemented in Received_Notify. It gets MeshComp.GetOwner(), casts the owner to BP_TFA_BaseCharacter, and then calls Character.SpawnObjectAttached(...). If the cast fails, nothing happens.
The notify itself does not contain the spawn and attach logic. It delegates that work to BP_TFA_BaseCharacter::SpawnObjectAttached.
Readable Blueprint Flow
What the Character Function Does
The notify forwards into BP_TFA_BaseCharacter.SpawnObjectAttached(...). The main implementation lives inside the composite graph CGraph_SpawnObjectAttached.
Parameter Mapping
ObjectToSpawn→ClassToSpawnAnimation→AnimationToPlaySpawnSocketName→SpawnSocketNameLocationOffset→LocationOffsetRotationOffset→RotationOffsetVisibilityDelay→DelayBeforeVisible
High-Level Behavior
When called, the character function:
Builds a spawn transform from the socket transform plus offsets
Spawns the actor with
AlwaysSpawnAdds the
DisposableItemtag to the actorAttaches the actor to
MeshatSpawnSocketNameIf the actor has a
SkeletalMeshComponent, hides it, optionally playsAnimationToPlay, waits forDelayBeforeVisible, and then shows it again if the actor still exists
Readable Character-Side Flow
DelayBeforeVisible and AnimationToPlay only matter when the spawned actor has a SkeletalMeshComponent. A static-mesh-only actor still spawns and attaches, but it will not use that hide-show path.
The function always adds the DisposableItem tag. That is what makes later cleanup on the character side possible.
Parameters
ObjectToSpawn
ObjectToSpawnThis is the actor class that gets spawned and attached to the socket. Typical examples are reload magazines, tools, or small handheld props.
Practical tips:
Keep the prop pivot at the point that should sit on the socket
You do not need to manually add the
DisposableItemtag, because the character function already does that
Animation
AnimationThis optional animation sequence is forwarded as AnimationToPlay. It is most useful for skeletal props with moving parts. Leave it as None for static mesh props.
SpawnSocketName
SpawnSocketNameThis is the socket or bone on the character mesh that receives the prop. The default is ik_hand_l.
Useful patterns:
ik_hand_lorik_hand_rfor in-hand propsSpine, chest, or head sockets for devices or body-mounted items
Because the character swaps between first-person and third-person meshes, make sure the socket exists on every mesh that can play the montage.
LocationOffset
LocationOffsetThis is a local translation offset applied on top of the socket transform. Unreal units are centimeters, and the axes follow the socket’s local space.
Best practice:
Fix the prop pivot first
Use small offsets for final alignment
The current character implementation uses SnapToTarget attachment rules, which can override the final world-space offset after the attach. If your offsets do not appear to stick, fix the prop pivot or change the attach rules in the character function.
RotationOffset
RotationOffsetThis is a local rotation offset applied on top of the socket rotation. It is useful when the prop needs to face a slightly different direction without changing the socket itself.
The same SnapToTarget caveat applies here. Final rotation can effectively be dominated by the attachment rules.
VisibilityDelay
VisibilityDelayThis value is forwarded as DelayBeforeVisible. It is useful for syncing the prop’s visible appearance with the exact hand contact or reveal timing in the animation.
Default Values
ObjectToSpawn = NoneAnimation = NoneSpawnSocketName = ik_hand_lLocationOffset = (0, 0, 0)RotationOffset = (0, 0, 0)VisibilityDelay = 0.0
Placement Tips
Place the notify on the frame where the prop should appear
When swapping magazines, pair it with a weapon-side magazine hide state or a later throw or destroy notify
Keep socket naming consistent across your first-person and third-person character meshes
Example Setups
Magazine in the Left Hand During a Reload
ObjectToSpawn: your magazine prop actorSpawnSocketName:ik_hand_lLocationOffset: start near(0, 0, 0)RotationOffset: start near(0, 0, 0), then tune yaw and pitchVisibilityDelay:0.0for instant appearance, or about0.05to0.15to better match contact timing
Cleanup options:
Use Throw Physics Object (AN_TFA_ThrowPhysicsObject) at the release frame
Or destroy the prop on montage end through gameplay logic
Device Appears in Hand Without Obvious Pop-In
Place the notify slightly early
Use
VisibilityDelayso the prop becomes visible exactly when the hand closes or the device clears the body
Troubleshooting
Nothing happens
The animation is playing on a mesh not owned by
BP_TFA_BaseCharacterObjectToSpawnisNone
The object spawns, but not where you expect
Check
SpawnSocketNameTune
LocationOffsetandRotationOffset
It spawns correctly once, then duplicates
The notify is firing multiple times because of loops, section jumps, or replays
Add explicit cleanup or rely on a consistent
DisposableItemcleanup rule
It looks aligned in first person but off in third person
The socket exists on both meshes, but the transforms differ
Copy socket transforms between skeletons if you want identical placement
Notes and Gotchas
This notify only forwards parameters. The real spawn and attach rules live in
BP_TFA_BaseCharacter::SpawnObjectAttached.Received_Notifyreturnsfalsehere, even though the side effects can still happen.If your tools depend on the return value, consider changing that behavior in your local version.
If you use disposable animation props, keep your cleanup rules consistent, because the pack commonly relies on the
DisposableItemtag.
Related Pages
See Base Character (BP_TFA_BaseCharacter) for cleanup behavior tied to
DisposableItemSee Throw Physics Object (AN_TFA_ThrowPhysicsObject) for the matching detach-and-throw path
Last updated
Was this helpful?

