Skip to main content

AnimNotify

Version Info

Added in v1.17.0

Use AnimNotify to control KawaiiPhysics external forces and Alpha during animations.

Overview

KawaiiPhysics provides three types of AnimNotify:

ClassTypePurpose
UAnimNotify_KawaiiPhysicsAddExternalForceNotifyAdd force instantly
UAnimNotifyState_KawaiiPhysicsAddExternalForceNotifyStateApply force during interval
UAnimNotifyState_KawaiiPhysicsSetAlphaNotifyStateOverride Alpha during interval

View Source

AnimNotify vs AnimNotifyState

  • AnimNotify: Triggers on a single frame. Use for instant impacts
  • AnimNotifyState: Operates during start-to-end interval. Use for continuous effects

AnimNotifyState External Force

External force application via AnimNotifyState


AnimNotify_KawaiiPhysicsAddExternalForce

AnimNotify that adds external force instantly.

Parameters

ParameterTypeCategoryDescription
AdditionalExternalForcesTArray<FInstancedStruct>ExternalForceArray of forces to add
FilterTagsFGameplayTagContainerExternalForceTags to filter application targets
bFilterExactMatchboolExternalForceWhether to filter by exact tag match

Use Cases

  • Impact on jump landing
  • Recoil on attack hit
  • Instant wind or explosion

Setup Steps

  1. Open Animation Sequence
  2. Right-click on Notifies track → Add NotifyKawaiiPhysics Add External Force
  3. Add force presets to AdditionalExternalForces
  4. Configure FilterTags as needed

AnimNotifyState_KawaiiPhysicsAddExternalForce

AnimNotifyState that applies external force during the interval. Adds force at notify start and automatically removes it at end.

Parameters

ParameterTypeCategoryDescription
AdditionalExternalForcesTArray<FInstancedStruct>ExternalForceArray of forces to add
FilterTagsFGameplayTagContainerExternalForceTags to filter application targets
bFilterExactMatchboolExternalForceWhether to filter by exact tag match

Use Cases

  • Hair flowing during dash
  • Special effects during skill activation
  • Continuous environmental forces

Setup Steps

  1. Open Animation Sequence
  2. Right-click on Notifies track → Add Notify StateKawaiiPhysics Add External Force
  3. Drag to set application interval
  4. Add force presets to AdditionalExternalForces

AnimNotifyState_KawaiiPhysicsSetAlpha

AnimNotifyState that overrides KawaiiPhysics node's Alpha during the interval. Adjust KawaiiPhysics intensity using animation curve values.

Parameters

Alpha Settings

ParameterTypeCategoryDefaultDescription
SourceEKawaiiPhysicsSetAlphaSourceAlphaCurveAlpha source type
CurveNameFNameAlpha-Curve name when Source=Curve
DefaultAlphaIfNoCurvefloatAlpha1.0Fallback value when curve unavailable (0.0-1.0)
ConstantAlphafloatAlpha1.0Constant value when Source=Constant (0.0-1.0)

Filter Settings

ParameterTypeCategoryDefaultDescription
FilterTagsFGameplayTagContainerFilter-Filter target nodes by tags
bFilterExactMatchboolFilterfalseWhether to filter by exact tag match

Alpha Source (EKawaiiPhysicsSetAlphaSource)

ValueDescription
CurveUse animation float curve
ConstantUse constant value

Use Cases

  • Reduce physics during specific motions
  • Vary physics influence with animation
  • Physics control during cutscenes

Using Curves

  1. Add a float curve to Animation Sequence
  2. Set curve name (e.g., KawaiiPhysicsAlpha)
  3. Set the same name in AnimNotifyState's CurveName
  4. Control Alpha value (0.0-1.0) with the curve
// Curve example
Time 0.0: Alpha = 1.0 (full physics)
Time 0.5: Alpha = 0.0 (physics off)
Time 1.0: Alpha = 1.0 (full physics)

Using Constant Value

// Set physics to 50% during interval
Source = EKawaiiPhysicsSetAlphaSource::Constant;
ConstantAlpha = 0.5f;

GameplayTag Filtering

All AnimNotifies support filtering by GameplayTag.

Setup

  1. Set KawaiiPhysicsTag on KawaiiPhysics node
// In Animation Blueprint's KawaiiPhysics node
KawaiiPhysicsTag = FGameplayTag::RequestGameplayTag("KawaiiPhysics.Hair");
  1. Set target tags in AnimNotify's FilterTags
  2. Specify match condition with bFilterExactMatch

Filter Behavior

bFilterExactMatchBehavior
falseMatches specified tag and its children (parent tags also allowed)
trueExact match only

Example: Distinguishing Multiple KawaiiPhysics Nodes

// GameplayTag hierarchy
KawaiiPhysics
├── Hair
│ ├── Front
│ └── Back
├── Skirt
└── Cape
// Apply force to Hair only
FilterTags.AddTag("KawaiiPhysics.Hair");
bFilterExactMatch = false; // Hair.Front, Hair.Back also targeted

// Apply force to Hair.Front only
FilterTags.AddTag("KawaiiPhysics.Hair.Front");
bFilterExactMatch = true; // Exact match only

Best Practices

1. NotifyState Interval Settings

  • Align start/end with natural animation breaks
  • Use Alpha curve near start/end to avoid abrupt changes

2. Performance Considerations

  • Avoid triggering many AnimNotifies simultaneously
  • Keep complex force calculations minimal

3. Debugging

  • Set bDrawDebug = true on force presets to visualize vectors
  • Verify behavior in Animation Editor preview