Skip to content

SKGProceduralAnimComponent

Sneaky Kitty edited this page Jan 10, 2026 · 12 revisions

This component serves several purposes. For firearms, it allows for various offsets for third person and slight adjustments to your idle animation, aiming, movement sway, movement and rotation lag, deadzone, recoil, procedural poses, point aiming, and a few more small things. When added to attachments such as optics or lasers, it is used for aiming. The settings have many settings for Spring Interpolation for Stiffness, Critical Dampening Factor, Mass, and Target Velocity Amount. If you are unsure what these are for, google them as the settings are exposed for all spring interpolation procedurals.

SKGPDAProceduralAnimInitialize

image
image

  • ProceduralMeshName: This is the name of the mesh component that will contain the ProceduralAimSocketNames such as a Firearm mesh or Optic mesh.
  • ProceduralAimSocketNames: These are the aim sockets. For most games, a single aim socket is sufficient, but you can have several. For example, the Elcan optic has built in iron sights on the top of the housing, so it can have 2. image
  • RightHandDominatePointAimAimSocketIndex: This is typically only going to be on firearms. If you want to point aim (typically represented in games by rolling the firearm and not aiming with the sights) while in right handed mode, this is the socket that gets used.
  • LeftHandDominatePointAimAimSocketIndex: Same as the above but for left handed mode.
  • CanUseLeftHandDominate: Whether or not you can use left handed mode (again this is intended to be used solely on whatever actor your holding) when trying to switch.
  • ProceduralAnimGameplayTag: This is useful if you are trying to setup your anim graph to blend by gameplay tag for an idle animation. For example, if you had an M4 and a SKS, the M4's SKGDAProceduralAnimInitializeSettings will have the M4 tag here, the SKS would have the SKS tag. Then in your anim graph, you can simply fetch the tag from the procedural anim component of whatever your holding and blend with it. This is optional.
  • GameplayTags: Tags you want this data asset to have. No use by default.

Settings

SKGPDAAimingSettings

image

  • ForwardAxis: This is the forward axis of the mesh you are using. Epic states that X is forward in the engine, but they produce content in their examples with Y forward meshes. The meshes provided in this example project are Y forward, so the Forward Axis is set to Y.
  • AimingDistance: This is the default aiming distance you want to use. For example, if this is on a firearm with a value of 8, the aim point will be 8 units in front of the root of the firearm (in the example m4, the root is at the pistol grip, so 8 units in front of that is how far away the firearm will be. This is hard to describe so I recommend playing around with it). If you add an optic with an AimingDistance of 5, this will be added to 13 units in front of the root.
  • bUseFixedAimingDistance: Following the above scenario, if you enabled this on your optic, then regardless of where the optic is on your firearm and whatever AimingDistance settings were set on the firearm, your optics aim socket will be 5 units in front of your camera (assuming AimingDistance is set to 5).
  • DefaultAimingSpeed: This is read from the SKGProceduralAnimComponent on whatever you are holding, such as a firearm. It does not get overridden by any attachments on the firearm by default. To have attachments affect your aiming speed, you will want to incorporate the provided stats system.
  • bAllowCameraZoom: If this is true, when you aim your camera will zoom in by CameraZoomPercentage percent at the CameraZoomInterpSpeed.
  • CameraZoomPercentage: How much the camera should zoom in while aiming.
  • CameraZoomInterpSpeed: How fast the camera should zoom in/out when aiming.
  • bCanAim: Whether or not this procedural anim component can be used to aim.

SKGPDAProceduralOffsets

image

  • First/ThirdPersonBasePoseOffset: This affects the base pose so you can modify your idle position and everything without needing to adjust your animations. I do recommend not doing this and instead doing it by correcting your animations.
  • ThirdPersonRightHandedAimingOffset: This offset is for when you are aiming. If you are watching someone else aim with no offset, the optic will align directly in front of the camera which is likely in the center of your characters head. This lets you see the person aiming with an offset instead so you can bring the firearm over to the shoulder.
  • ThirdPersonLeftHandedAimingOffset: Same as the above but used when you are in left hand dominant mode.

SKGPDACycleAimingPointSettings

image
These are the settings that apply when you cycle between aiming points. This can be going to/from point aiming, to/from different optics, or to/from different aiming sockets on the same optic.

SKGPDAMovementSwaySettings

image
Location and Rotation settings are the same, one is for held actor location movement, one is for held actor rotation.

  • bUseMovementSway: Whether or not we want to use movement sway. Can get the same effect by not setting this data asset.
  • Multiplier: This is how much to multiply the Curve's values by so you can get different amounts of movement from the same curves.
  • MultiplierInterpolationRate: You can control the multplier at runtime by calling SetMovementSwayMultiplier on the SKGShooterPawnComponent that your pawn has, likewise this can be reset to the default by calling ResetMovementSwayMultiplier. The MultiplierInterpolationRate is what lets the change in this multiplier be smooth.
  • Curve: This is the curve used for the XYZ.
  • InterpSpeed: This is for interpolating through the curve. Useful if you wish to switch curves at runtime to help blend it out.

SKGPDAMovementLagSettings

image

  • bUseMovementLag: Whether or not we want to use movement lag. Can get the same effect by not setting this data asset.
  • bDisableForwardMovementLagWhenAiming: If true, the pitch of the firearm (up/down) will not happen when moving forward/backward when aiming.
  • bUseSpringInterpolation: If true, the movement lag will use spring interpolation, if false it will use normal interpolation (InterpSpeed).
  • ForwardBackwardNormalizedMax: The smaller the value, the more the pitch of the firearm will change as you move forward/backward.
  • LeftRightNormalizedMax: Same as the above but with left/right movement and it affects the roll of the firearm.
  • UpDownNormalizedMax: Same as the above but with up/down movement such as crouching or jumping.
  • ForwardBackwardMultiplier: This is the multiplier for forward/backward movement. Setting it to a negative inverts the direction.
  • Multiplier: Same as the above for for the Pitch/Yaw/Roll.
  • InterpSpeed: This is the interpolation speed for when bUseSpringInterpolation is set to false.

SKGPDARotationLagSettings

image

  • These settings are performed via your rotation IE your mouse movement as you turn left/right/up/down.
  • bUseRotationLag: If false, rotation lag will not be used. Not setting the data asset also gives the same effect.
  • bUseSpringInterpolation: Whether or not to use spring interpolation.
  • MaxRotation: What is the max rotation in the Pitch/Yaw/Roll that the rotation lag can rotate to.
  • MaxLocation: Same as the above but for location.
  • RotationMultiplier: How much to increase the rotation amount by. Higher = more influence from your rotation.
  • LocationMultiplier: Same as the above but for location.

SKGPDADeadzoneSettings

image

  • bUseDeadzone: Whether or not to use deadzone. You can also not add this data asset and achieve the same effect.
  • PitchRate: This is the rate at which the deadzone pitch (up/down) will move in relation to your camera. Higher = faster.
  • YawRate: Same as the above but left/right.
  • PitchLimit: This is the limit of how high/low what your holding can move in relation to your camera. Higher = more.
  • YawLimit: Same as the above but left/right.
  • InterpolationSpeed: This is how fast what your holding will move to the new point. Higher = faster, lower = more smoothed out and slower.
  • bDisableDeadzoneWhileAiming: If true, deadzone will be disabled when aiming.
  • bAlwaysInterpolateBackToCenter: If true, deadzone will interpolate itself back to center when you are not moving your mouse.
  • InterpolateBackToCenterSpeed: This is the speed at which deadzone will be interpolating back to center. Higher = move to center faster.
  • DeadzoneAimingDisableInterpolationSpeed: This is the same as the above, but only applies when bDisableDeadzoneWhenAiming is true. When you aim, this is the speed at which the aim point interpolates back to the center of the screen.

SKGPDARecoilSettings

image

  • Recoil is driven by a curve, so control rotation will have a curve, location and rotation of the held actor will also have one. The Random variables are to add variation. For example with the RecoilRotation PitchRandom, it is between 2 and 5. This means each time you shoot, the muzzle will flip up a different amount.

SKGPDAProceduralPoseSettings

image

  • See the Creating a custom pose page.
  • LocationCurve: This is the curve that manipulates the location of the held actor.
  • RotationCurve: This is the curve that manipulates the rotation of the held actor.
  • PlayRate: This is how fast it will move through the curve. Higher = faster.
  • CurveEndTime: This is the last frame that contains a key in either the location or rotation. If the location ends at frame 6, but rotation ends at frame 10, set this to 10.
  • CurveTag: This is the identifier for the pose. The above screenshot uses Poses.HighPort, so if you want to enter the HighPort pose, you pass in the tag Poses.HighPort to the PerformProceduralPose function off the SKGShooterPawnComponent.
  • Interpolate: This is whether or not you want to interpolate throughout the pose. This is useful for switching between poses partway between or starting and canceling a pose so it blends out.
  • InterpolateConstant: This just changes the interpolation type to a constant interp.
  • InterpolationTime: This is how many frames it will interpolate through before it stops (in the screenshot it's set to 5, meaning it will only interpolate for the first 5 frames).
  • InterpolationSpeed: This is how fast the interpolation rate is.
  • InterpolationSpeedMultiplier: TODO

Functions

Aim Category

GetProceduralAimingSettings

This function returns the current aiming settings used for this component.

CanAim

This function returns true based on whether or not the component can aim, false if not aimable.

SetCanAim

This function sets whether or not this procedural anim component is aimable.

GetAimWorldTransform

This function returns the aim socket transform in world space.

CycleAimSocket

This function will cycle which aim socket is used on the optic. For example, an Elcan would have two aim points, one through the optic and one ontop of the housing (the build in iron sights) so you would utilize the Procedural Aim Socket Names and this function allows you to cycle between them. image

StartPointAiming

This function will start using the point aiming socket on the component.

StopPointAiming

This function will stop using the point aiming socket on the component and switch back to the normal aim sockets.

UpdateAimOffset

This function is called automatically by the SKGShooterPawnComponent and SKGFirearmComponent to set and update the aim socket for use with the procedurals.

Pose Category

GetPose

This function returns true if the pose is found and output the found pose based on the given tag.

Getters

GetAimOffset

This function returns the aim offset.

GetProceduralAnimMesh

This function returns the mesh used with the system.

Clone this wiki locally