- Home /
Question by
GraczBezNicku · Jul 11, 2018 at 10:28 AM ·
develop
Changing Scenes Dosen't work
Hello! I was creating my first game in Unity 2D, but something bad happend. I created a script that activates when Character reaches end line.
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.name == "przeszkoda")
{
SceneManager.LoadScene("Level1");
}
if (other.gameObject.name == "Koniec")
{
switch(level)
{
case 1: SceneManager.LoadScene("Level2"); break
}
}
}
But it dosen't work. When i start the game Level 1 scene is restarting over and over again, so I can't play
Here you have the entire code.`
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Poruszanie : MonoBehaviour
{
public GameObject player;
public int level;
// Use this for initialization
void Start ()
{
SceneManager.LoadScene("Level1");
player.transform.position = new Vector2 (-0.1659401f, 2.09f);
}
// Update is called once per frame
void Update ()
{
if (Input.GetKey(KeyCode.RightArrow))
{
player.transform.position = new Vector2 (transform.position.x + 0.1f, transform.position.y);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
player.transform.position = new Vector2 (transform.position.x - 0.1f, transform.position.y);
}
if(SceneManager.GetActiveScene () == SceneManager.GetSceneByName ("Level1"))
{
level = 1;
}
if(SceneManager.GetActiveScene () == SceneManager.GetSceneByName ("Level2"))
{
level = 2;
}
}
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.name == "przeszkoda")
{
SceneManager.LoadScene("Level1");
}
if (other.gameObject.name == "Koniec")
{
switch(level)
{
case 1: SceneManager.LoadScene("Level2"); break;
}
}
}
PLS HELP! I don't know what to do.
`
Comment
Best Answer
Answer by JavierRuidoRosa · Jul 11, 2018 at 10:34 AM
Here is the problem:
void Start ()
{
SceneManager.LoadScene("Level1");
player.transform.position = new Vector2 (-0.1659401f, 2.09f);
}
You are calling the LoadScene method in Start(), so everytime the scene starts, it reloads itself.
Just remove that call and leave it like this:
void Start ()
{
player.transform.position = new Vector2 (-0.1659401f, 2.09f);
}
Your answer
Follow this Question
Related Questions
folding in mono develop 1 Answer
How to be efficient? 1 Answer
MonoDevelop Won't Open 2 Answers
Ps3/xbox develop 1 Answer