Disable pawn spawn on level load and spawn via blueprint

Im trying to make a game that is all within the same persistent level including the main menu via sub levels. ive got my menu working fine and a camera transition using matinee to the main game level.

In terms of spawning the playable character is where im having problems. I have the games menu set up as a streaming level that is streamed on the “event begin play”. it then streams in an intro level after clicking the relevant option in the menu. the playable character should not be spawned until you get to the intro level.

Ive got a blueprint setup for the playable character, and ive for testing purposes set its visible representation to a text renderer reading “LOL”.

As soon as the game starts and the menu map is shown this character is visible at the world origin. I can see it behind my menu*. what I am trying to achieve is not spawning the character until a menu option has been selected and the camera moves to the actual game world and then spawn the character and only accept input from then onwards.

*ive now fixed this aspect, it now spawns at the playerstart, I had my player start set incorrectly. other issues still relevant.


Im trying to achieve all of this through blueprints. I have a player start on the game world, it ignores this currently and spawns at world origin.

How do I make my character spawn at the playerstart and also only spawn once I issue a blueprint command to tell it to spawn? if it has to spawn on load then how do I disable input until the game is ready to accept input? (and still allowing mouse input for the menu, ive got this currently set to disable mouse input once the camera pans to the game world).

I am still learning everything myself, so I apologize if I am incorrect here. You should be able to have things set up the way you want by just not setting the pawn as the default, and instead setting up a separate pawn that is used for the input controlling the menu and setting that as the default. You can then spawn your other pawn manually (using the spawn actor by class node), then bind your player controller to the new pawn actor. Of course creating a separate map for your menu is also an option, but I assume you didn’t want to go that route.

Edit: I see you mentioned that you don’t want to change maps, have not had my coffee yet.

thanks for the response. I initially had it left on the default pawn and such, in these cases it would spawn a sphere as the default pawn in the same location and use default input of wasd. I had to create my own versions of these blueprints to overrule these values. so currently im getting the pawn to spawn at the correct playerstart I just don’t know how to tell it to not spawn the actor on initial map load and to tell it to wait until I want it to spawn via blueprint.

If you do not have the blueprint placed in the world it should not be spawned automatically, unless it is assigned as the default under your world settings. Could you take a screen shot of the world settings and your default pawn’s node setup for me?

this is my world settings:

and this is my pawn:

f0878d1cc81b1536ab5cf191b955c38ec4c14b40.jpeg

I have mappings in my project settings for movement and jump.

It looks like you still have the gameplay pawn set to the default under your game mode settings. Go ahead and make a new blank pawn with just the basics, and set it to the default. Then under the node graph (for example’s sake) drop in an input event, for example when the enter key is pressed, and link that into your matinee event and have it spawn the pawn you have set now, bCharacterGame. You can then switch then have the player posses the newly created actor after you spawn it.

my blueprints for game mode and pawn etc are all completely blank atm. I haven’t set anything in any blueprint apart from the level ones and the playercontroller which ive only set mouse input active. so I don’t understand why its spawning the character (it will do that as a sphere even if I don’t have a blueprint set) that’s what my question is.

Ok ive managed to get some of this working. I set a blank pawn as my default and then set a “spawnactor” node to spawn my bCharacterGame at my player start. I am unable to control it though, even with the axis mappings set up correctly as per one of my previous screenshots. How do you have it “posses” the character? I tried using a “posses” node, and while it gives no errors, it makes no difference.

I also threw it some print string nodes on my input graph to see why my input is not working and it appears as though it is in an endless loop of firing without me touching anything. The “inputaxis move” event should only fire when I press the relevant mapped key in my project settings right? if I add the print string between this event and my “add movement input” action it prints an endless stream.

any further help with these last few issues?

EDIT: with some further playing I have managed to get this to work. the player controller now posses bCharacterGame and I noticed jump input was working fine but moving wasn’t. Changed the name of my “Move” axis mapping to “MoveSide” and it has fixed it, so must be a conflict with the name “Move”.

Simple Stop Spawn on level

Just cast to the character in the level blueprint on play and then destroy actor.

i had this same issue and after i set the default pawn class to none in the map this stopped happening for me. thanks!