Code below not work - my AScout stay in air on BeginPlay. But Blueprint realization is work fine.
But if I pause game by F8, and change any parameter for Movement component, then physics wake up and Actor drop down.
Can anyone suggest the correct implementation of using UChaosWheeledVehicleMovementComponent?
I tried to add force and wake up the physics body, but it doesn’t work.
AScout::AScout()
{
movement_component = CreateDefaultSubobject<UChaosWheeledVehicleMovementComponent>(TEXT("VehicleMovementComp"));
movement_component->SetIsReplicated(true);
mesh_component = CreateDefaultSubobject<USkeletalMeshComponent>(FName("Mesh"));
SetRootComponent(mesh_component);
movement_component->SetUpdatedComponent(mesh_component);
mesh_component->SetMobility(EComponentMobility::Movable);
mesh_component->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
mesh_component->SetSimulatePhysics(true);
mesh_component->SetGenerateOverlapEvents(true);
mesh_component->SetCollisionProfileName(UCollisionProfile::Vehicle_ProfileName);
mesh_component->BodyInstance.bNotifyRigidBodyCollision = true;
mesh_component->BodyInstance.bUseCCD = true;
mesh_component->SetCanEverAffectNavigation(false);
RootComponent = mesh_component;
sk_mesh = LoadObject<USkeletalMesh>(nullptr, TEXT("/Script/Engine.SkeletalMesh'/Game/Meshes/Units/Scout/Meshes/Scout.Scout'"));
if (sk_mesh)
mesh_component->SetSkeletalMesh(sk_mesh);
wfl.WheelClass = URTSFrontWheel::StaticClass();
wfl.BoneName = FName(*FString(TEXT("FL")));
wfl.AdditionalOffset = FVector(0.f, 0.f, 0.f);
movement_component->WheelSetups.Add(wfl);
wfr.WheelClass = URTSFrontWheel::StaticClass();
wfr.BoneName = FName(*FString(TEXT("FR")));
wfr.AdditionalOffset = FVector(0.f, 0.f, 0.f);
movement_component->WheelSetups.Add(wfr);
wbl.WheelClass = URTSBackWheel::StaticClass();
wbl.BoneName = FName(*FString(TEXT("BL")));
wbl.AdditionalOffset = FVector(0.f, 0.f, 0.f);
movement_component->WheelSetups.Add(wbl);
wbr.WheelClass = URTSBackWheel::StaticClass();
wbr.BoneName = FName(*FString(TEXT("BR")));
wbr.AdditionalOffset = FVector(0.f, 0.f, 0.f);
movement_component->WheelSetups.Add(wbr);
}