Multiple Player Starts Issue

I have levels that the player needs to enter from multiple locations at different times. I am attempting to do this by having multiple player starts with different tags but am running into some issues. I also don’t know if this is the best way to do what I’m trying to accomplish. I feel like there should be a built in way to choose between multiple player starts.

Here is my current blueprint. I plan on setting the variable “Desired Start” while the player is leaving a different level.

When I use this blueprint the player’s location is correctly set but the rotation is not. Oddly, the rotation of the player stays the same as the rotation of the last player start actor I placed. I have three player starts in this level.

I made this modification and saw that the player is indeed being spawned at the last placed player start actor before being moved to my desired player start actor, however I’m still at a loss for why the transform is being incorrectly gotten or set. I also tested this with an additional node placed after the transform to set just the rotation but that seemed to have no effect.

Ok, so I’ve since found out that the issue is that I am not able to set character rotation except from the player controller using the “Set Control Rotation” node. I can get everything to work using this node now. However, I would still like to know why it works this way.

I have solved my problem by accidentally finding that there is a built in system for setting player start using nodes only available in the game mode blueprint. I feel that these nodes need to be mentioned in the documentation for player starts because they currently are not and are barely mentioned in the game mode documentation. Every tutorial I’ve found on Answer Hub and on YouTube hasn’t mentioned these nodes, and instead has instructed people to use overly complicated ways of setting player locations that don’t always work.

298131-bp.png

2 Likes

Thank You! This helped me out so much. I was fumbling all over those tutorials you mentioned too. But this made it much easier. :slight_smile:

1 Like

Actually, because I cast to a custom game instance from my main menu where I let the player select the location they want to start, this didn’t work consistently. So I had to use Teleport afterall, but on the player character, not the player controller. This works consistently now. The game instance is just one I made up that’s just storing a string variable called PlayerStartTag. I have 3 player starts in the scene with unique tags I typed. The controller finds the player start with that same tag, then I get its transform and teleport the character there. Print String is just for debugging, to make sure it’s reading the right string.