Enter/exit buildings spawn

Hello good people, Ive looked around for an answer to this for a while not but with no luck.

Ive already got my player being sent to another scene when close enough to the outside door and when E has been pressed, this works the other way round, the door in the building leads back to the outdoor scene. However I cannot control where the player spawns in each scene (should be by the door) instead it spawns where it was placed in the editor. Can someone help me out with this?

Hi Blink,

Are you using a LoadLevelAdditive? If so, you can look for a teleport gameObject script.

The way this works is by teleporting your parent object “First Person Controller” or whichever you are using to the desired location.

If you are using a LoadLevelSync, you could simply have him starting from outside the door.

Personally me, I would use the teleport script as it would require more time and effort to change each scene everytime he walks in and out of a building.

Let me know if this helps.

I done some research, and amended a script

 function OnTriggerEnter(other : Collider)
{
    if (other.gameObject.name == "First Person Controller") {
        other.transform.position = ...position you want to teleport to goes here...;
    }
}

So I’m assuming when you go to the door, you have a trigger area, so if the user preses E, the trigger activates, unless you are using raycasting. But with this script, if you just edit it a bit and then add something like if(Input.GetKey(“e”)) { inside it, you may get what you were after.

Let me know if that goes well.

Create an array of Vector3, assign spawn points for corresponding scene indexes. Use PlayerPrefs, to store the last scene before loading level, and use this information to change the position of the player.

//Scene1:
PlayerPrefs.SetInt("sceneId", Application.loadedLevel);
Application.LoadLevel(....);

//Scene2:
PlayerObject.transform.position = SpawnPoints[PlayerPrefs.GetInt("sceneId")];

hope this helps.