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;
    }
Ejemplo n.º 3
0
    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;
    }