예제 #1
0
    void Leave(string scene)
    {
        string name   = SceneManager.GetActiveScene().name;
        string result = "";

        foreach (string k in objectDict.Keys)
        {
            if (objectDict[k].Equals("Destroyed"))
            {
                result += ";" + k + ":" + objectDict[k];
            }
            else
            {
                result += ";" + k + ":" + GameObject.Find(k).transform.position;
            }
        }
        if (result != "")
        {
            result = result.Substring(1);
        }

        SceneManagerWithParameters.SetParam(name + "Active", result);
        SceneManagerWithParameters.SetParam("SongTime", song.time.ToString());
        SceneManagerWithParameters.Load(scene, "warped", "true");
    }
예제 #2
0
    private void OnTriggerStay2D(Collider2D other)
    {
        if (Input.GetKeyDown(KeyCode.X) && other.gameObject.name == "Player" && !warped)
        {
            SceneManagerWithParameters.SetParam("location", warplocation);
            if (kind == MirrorType.sideways)
            {
                SceneManagerWithParameters.SetParam("type", "sideways");
                if (other.gameObject.transform.position.x > transform.position.x)
                {
                    SceneManagerWithParameters.SetParam("orientation", "right");
                }
                else
                {
                    SceneManagerWithParameters.SetParam("orientation", "left");
                }

                SceneManagerWithParameters.SetParam("velocity", other.GetComponent <Rigidbody2D>().velocity.ToString());
                SceneManagerWithParameters.SetParam("vertposition", (other.transform.position.y - transform.position.y).ToString());
            }
            if (kind == MirrorType.updown)
            {
                SceneManagerWithParameters.SetParam("type", "updown");


                SceneManagerWithParameters.SetParam("velocity", other.GetComponent <Rigidbody2D>().velocity.ToString());
                SceneManagerWithParameters.SetParam("horiposition", (other.transform.position.x - transform.position.x).ToString());
            }
            //GameObject.Find("MainCamera").SendMessage("StoreTime");
            GameObject.Find("SceneManager").SendMessage("Leave", scene);
        }
    }
예제 #3
0
    public void OnDeath()
    {
        string c = SceneManagerWithParameters.GetParam("Destroyed");

        if (c == "")
        {
            c = this.gameObject.name;
        }
        else
        {
            c += "," + this.gameObject.name;
        }
        Debug.Log(c);
        SceneManagerWithParameters.SetParam("Destroyed", c);
        SceneManagerWithParameters.SetParam(this.gameObject.name, this.gameObject.transform.position.ToString());
        this.GetComponent <SpriteRenderer>().enabled = false;
        this.GetComponent <Rigidbody2D>().simulated  = false;
        this.GetComponent <BoxCollider2D>().enabled  = false;
        GameObject.Find("SceneManager").SendMessage("Destroy", this.gameObject.name);
    }
예제 #4
0
    // Start is called before the first frame update
    void Start()
    {
        string time = SceneManagerWithParameters.GetParam("SongTime");

        if (time != "")
        {
            song.time = float.Parse(time);
        }
        song.Play();
        objectDict = new Dictionary <string, string>();
        string name   = SceneManager.GetActiveScene().name;
        string active = SceneManagerWithParameters.GetParam(name + "Active");

        if (active == "")
        {
            GameObject[] destroyable = GameObject.FindGameObjectsWithTag("Breakable");
            foreach (GameObject des in destroyable)
            {
                if (des.GetComponent <SpriteRenderer>().enabled == false)
                {
                    objectDict.Add(des.name, "Destroyed");
                }
                else
                {
                    objectDict.Add(des.name, des.transform.position.ToString());
                }
            }
        }
        else
        {
            string[] sArray = active.Split(';');
            foreach (string s in sArray)
            {
                string[] unit = s.Split(':');
                objectDict.Add(unit[0], unit[1]);
            }
        }


        player = GameObject.Find("Player");
        if (SceneManagerWithParameters.GetParam("warped").Equals("true"))
        {
            mirror = GameObject.Find(SceneManagerWithParameters.GetParam("location"));
            Mirror_warp c = (Mirror_warp)mirror.gameObject.GetComponent("Mirror_warp");
            if (c != null)
            {
                c.warped = true;
            }
            if (SceneManagerWithParameters.GetParam("type").Equals("sideways"))
            {
                float ydiff = float.Parse(SceneManagerWithParameters.GetParam("vertposition"));
                if (SceneManagerWithParameters.GetParam("orientation").Equals("left"))
                {
                    player.transform.position = new Vector2(mirror.transform.position.x + c.distance, mirror.transform.position.y + ydiff);
                }
                else
                {
                    player.transform.position = new Vector2(mirror.transform.position.x - c.distance, mirror.transform.position.y + ydiff);
                }
                string velString = SceneManagerWithParameters.GetParam("velocity");
                player.GetComponent <Rigidbody2D>().velocity = StringToVector2(velString);
            }
            else
            {
                float xdiff = float.Parse(SceneManagerWithParameters.GetParam("horiposition"));

                player.transform.position = new Vector2(mirror.transform.position.x + xdiff, mirror.transform.position.y + c.distance);
                string velString = SceneManagerWithParameters.GetParam("velocity");

                Rigidbody2D playerRb = player.GetComponent <Rigidbody2D>();
                Vector2     v        = StringToVector2(velString);
                v = new Vector2(v.x, -v.y);
                playerRb.velocity = v;
            }
            string destroyed = SceneManagerWithParameters.GetParam("Destroyed");
            if (destroyed != "")
            {
                string[] sArray = destroyed.Split(',');
                foreach (string i in sArray)
                {
                    obj           = GameObject.Find(i);
                    objectDict[i] = SceneManagerWithParameters.GetParam(i);
                    Vector3 pos = StringToVector3(SceneManagerWithParameters.GetParam(i));
                }
                destroyed = "";
                SceneManagerWithParameters.SetParam("Destroyed", destroyed);
            }
        }
        foreach (string k in objectDict.Keys)
        {
            obj = GameObject.Find(k);
            if (objectDict[k].Equals("Destroyed"))
            {
                obj.GetComponent <Rigidbody2D>().simulated  = false;
                obj.GetComponent <SpriteRenderer>().enabled = false;
                obj.GetComponent <BoxCollider2D>().enabled  = false;
            }
            else
            {
                obj.transform.position = StringToVector3(objectDict[k]);

                obj.GetComponent <Rigidbody2D>().simulated  = true;
                obj.GetComponent <SpriteRenderer>().enabled = true;
                obj.GetComponent <BoxCollider2D>().enabled  = true;
            }
        }
    }