Hi! The thing is that MovementComponents often control its UpdatedComponent movement. In fact, the logic of Radial Force Component is like this:
PrimitiveComponent->AddRadialForce(Origin, Radius, ForceStrength, Falloff);
// see if this is a target for a movement component
AActor* ComponentOwner = PrimitiveComponent->GetOwner();
if(ComponentOwner)
{
TInlineComponentArray<UMovementComponent*> MovementComponents;
ComponentOwner->GetComponents<UMovementComponent>(MovementComponents);
for(const auto& MovementComponent : MovementComponents)
{
if(MovementComponent->UpdatedComponent == PrimitiveComponent)
{
MovementComponent->AddRadialForce(Origin, Radius, ForceStrength, Falloff);
break;
}
}
}
You can see, that it do two things:
- call PrimitiveComponent->AddRadialForce(Origin, Radius, ForceStrength, Falloff) on affected Primitive component
- call MovementComponent->AddRadialForce(Origin, Radius, ForceStrength, Falloff) on MovementComponent that controls this Primitive component;