Warning Mobility of MyActor : DefaultSceneRoot has to be 'Movable' if you'd like to move

Steps to reproduce:

  1. Create a new Actor class in C++.

  2. Add the following code into the constructor.

    RootComponent = CreateDefaultSubobject< USceneComponent>(TEXT(“DefaultSceneRoot”));
    RootComponent->SetMobility(EComponentMobility::Static);

  3. Spawn the actor into the world from BeginPlay in a blueprint using Spawn Actor of Class with a zero transform.

  4. Run the game and exit, then inspect the message log.

This warning only occurs when creating an actor with a static component in C++. If you create the same actor in Blueprint and spawn the Blueprint one instead, then no warning.

Is this a bug?

Hey -

Can you elaborate on your step 3? Are you creating a blueprint of the actor class and adding the Spawn Actor node there? Are you using the Level Blueprint instead? In the Spawn Actor node, are you spawning an instance of the actor blueprint or an instance of the class itself? Also, which section of the message log are you seeing the warning appear in?

Sorry, I made a mistake in my steps. Its not when you spawn it in BeginPlay, its when you spawn it NOT in BeginPlay. So for example, if you set up to spawn the actors from your PlayerController when pressing a key on the keyboard.

Anyway, I have created and attached a sample project to demonstrate the problem. Launch, compile and run the attached sample in the editor. Then press the L key on your keyboard to spawn the actors (make sure you click into the scene otherwise it doesn’t catch your key press). They have nothing in them so you won’t see anything on screen. Now press Esc to end the session and you should get the warning come up for BadActor (C++). GoodActor (Blueprint) on the other hand throws no error. Both actors are set up the same way.

Hey -

Thank you for the correction and sample project. I was able to reproduce the behavior and have entered a report about the inconsistency with the mobility setting that you can follow here Unreal Engine Issues and Bug Tracker (UE-37892) .

Cheers

1 Like

Thanks ! So hope it gets fixed soon. The warnings are really annoying.

Just got this error in 4.16.3, I had to set my child actors to movable and the warning went away.

When following the reproduction steps listed in the report, the warning message does not appear in the output log. If you are still seeing this message, please provide the setup you’re using and the steps to reproduce the behavior.

I just notice that the issue has been marked as cannot reproduce in the tracker. Bit odd, when multiple people can reproduce it.

I’m seeing this issue on 4.17.1, but with a BP reparented to a C++ Actor file. Does everything need to be marked as movable?

Hello SentryTheDefiant-

I tried following the repro provided in the report, with the addition of adding an actor blueprint then reparenting it to my custom class. I still did not see any warnings in the output log when spawning instances of the blueprint. Since setting child actors to movable worked for jimd667 you can try that to see if it removes the warnings for you. If not, please provide your setup and explain exactly what/how you’re re-parenting to help me reproduce what you’re seeing on my end.

Hi . Just want to say I get this warning when calling AddImpulseAtLocation on a static mesh (the default floor plane in FirstPersonExampleMap). Running on a mac High Sierra, Unreal Editor Version: 4.18.3-3832480+++UE4+Release-4.18

Technically the error isn’t a problem. But it should be ignorable. Hope this helps.

This Error can be reproduced if you override the Tick event handler in Actors that are by default set to Static. Its pretty much warning the user that they are trying to move an object that is set to static.

I was able to fix this problem by checking to see if the actor property for mobility was set to moveable. IsRootComponentMovable() If No, I did not animate anything Or I disabled the Tick Event on Begin Play

This issue occurs when trying to animate Any type of Actor with the Moveable Property set to Static. It is warning the user on why their object is not moving.