Hi Colloseus,
It’s hard to tell without stepping through the code, but have you tried setting your Capsule component as the RootComponent? I see you have a default scene root, and the way the UMovementComponent works is if there isn’t a specified component to update for movement it will choose the root primitive component as shown below
void UMovementComponent::InitializeComponent()
{
bInInitializeComponent = true;
Super::InitializeComponent();
UPrimitiveComponent* NewUpdatedComponent = NULL;
if (UpdatedComponent != NULL)
{
NewUpdatedComponent = UpdatedComponent;
}
else if (bAutoRegisterUpdatedComponent)
{
// Auto-register owner's root primitive component if found.
AActor* MyActor = GetOwner();
if (MyActor)
{
NewUpdatedComponent = MyActor->GetRootPrimitiveComponent();
if (!NewUpdatedComponent)
{
FMessageLog("PIE").Warning(FText::Format(LOCTEXT("NoRootPrimitiveWarning", "Movement component {0} must update a PrimitiveComponent, but owning actor '{1}' does not have a root PrimitiveComponent. Auto registration failed."),
FText::FromString(GetName()),
FText::FromString(MyActor->GetName())
));
}
}
}
PlaneConstraintNormal = PlaneConstraintNormal.SafeNormal();
SetUpdatedComponent(NewUpdatedComponent);
bInInitializeComponent = false;
}
My first guess would be to make your collision component your root component and see if that works.