public static Loadzone FindLoadzoneToSpawnAt(string sceneEnteredFrom, string currentSceneName) { var zones = GameObject.FindObjectsOfType <Loadzone>(); Loadzone loadZoneSpecifying = null; foreach (Loadzone zone in zones) { if (zone.loadSpecifiedRoomInsteadOfCardinal) { if (sceneEnteredFrom == zone.SceneToLoad) { loadZoneSpecifying = zone; } } else { string rnt = MapLayout.GetRoomNextTo(currentSceneName, zone.whichSideOfRoom); if (sceneEnteredFrom == rnt) { //GetOppositeCardinal(zone.whichSideOfRoom)) { return(zone); } } } return(loadZoneSpecifying); }
public void PlacePlayerAfterLoadNewScene(Scene scene, LoadSceneMode mode) { Loadzone whereToLoad = FindLoadzoneToSpawnAt(lastSceneName, currentSceneName); //whereToLoad.gameObject.SetActive(false); PlayerCharacter.Singleton().transform.position = whereToLoad.exitPosition; SceneManager.sceneLoaded -= PlacePlayerAfterLoadNewScene; }
void GuessCardinal() { Loadzone[] allLoadZonesInRoom = GameObject.FindObjectsOfType <Loadzone>(); Loadzone eastZone = allLoadZonesInRoom[0]; Loadzone northZone = allLoadZonesInRoom[0]; Loadzone westZone = allLoadZonesInRoom[0]; Loadzone southZone = allLoadZonesInRoom[0];; float eastX = eastZone.transform.position.x; float northY = northZone.transform.position.y; float westX = westZone.transform.position.x; float southY = southZone.transform.position.y; foreach (Loadzone zone in allLoadZonesInRoom) { float x = zone.transform.position.x; float y = zone.transform.position.y; if (x > eastX) { eastX = x; eastZone = zone; } if (y > northY) { northY = y; northZone = zone; } if (x < westX) { westX = x; westZone = zone; } if (y < southY) { southY = y; southZone = zone; } } eastZone.whichSideOfRoom = Cardinal.EAST; northZone.whichSideOfRoom = Cardinal.NORTH; westZone.whichSideOfRoom = Cardinal.WEST; southZone.whichSideOfRoom = Cardinal.SOUTH; }