Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Mi escena carga extraño

Iniciado por KevinLastra, Noviembre 21, 2016, 10:41:05 PM

Tema anterior - Siguiente tema
Muy buenas a todos tengo un problema bastante raro que nunca me habia pasado antes, résulta que al cargar alguna escena del juego aveces me vibra extrañamente el juego, investigue la razon y de alguna forma se generan varias veces el nivel y despues se destruyen es muy raro no se si soy el unico??
 
 
 
Grasias por su atencion..


Te vibra? como un cameraShake ponele cuando cae una bomba en un juego? algo asi?

Noviembre 22, 2016, 09:14:27 AM #3 Ultima modificación: Noviembre 22, 2016, 09:14:46 AM por musaranya
Otra posible causa serían los colliders. Si instancias al player "dentro" de una pared o del suelo u otro objeto con el que puede colisionar (vegetación, etc) entonces se puede producir este efecto. Intenta instanciar al player en el aire o desactivar las colisiones a ver qué pasa

Noviembre 22, 2016, 01:28:52 PM #4 Ultima modificación: Noviembre 22, 2016, 01:29:09 PM por KevinLastra
cargo la escena asi:
 

int leveltoload;
void nivel (){
   SceneManager.LoadLevel(leveltoload);
}

 
 
 
no es por colliders ni por camara shaker la vibracion es al instante del inicio es solo un momento de ahi va todo normal, me doy cuenta de que se crea en la barra de objetos 5 veces el nivel 2 digamos.
 

tienes script en la camara? para seguir al player me refiero, pasanoslo a ver como es, igual puede ser a la hora de orientar la camara hacia el personaje.

····>Desarrollando un videojuegos online-arcade para Android.


····>Programador en:C,C#,VB.net,PHP,HTML5,SQL,JS,Ruby.


····>Trabajando en: Desarrollo de paginas web y bushistudios.


                    ๑۩۞۩๑_(▀▄)KINGTRASE()_๑۩۞۩๑ 



Noviembre 22, 2016, 02:13:32 PM #6 Ultima modificación: Noviembre 22, 2016, 02:26:48 PM por KevinLastra
este es el codigo pero la verdad no creo que sea el error porque este codigo lo tengo desde el inicio y este error es mas reciente de la actualizacion de unity
 

private Vector2 velocity;
    public float smothTimeY;
    public float smothTimeX;
    public GameObject player;
    public bool Bound;
    public Vector3 minCamaraPos;
    public Vector3 maxCamaraPos;
 
    void Start () {
        player = GameObject.FindGameObjectWithTag("Player");
}


void FixedUpdate () {
        float posX = Mathf.SmoothDamp(transform.position.x, player.transform.position.x, ref velocity.x, smothTimeX);
        float posY = Mathf.SmoothDamp(transform.position.y, player.transform.position.y, ref velocity.y, smothTimeY);
        transform.position = new Vector3(posX, posY, transform.position.z);
        if (Bound)
        {
            transform.position = new Vector3(Mathf.Clamp(transform.position.x, minCamaraPos.x, maxCamaraPos.x),
                Mathf.Clamp(transform.position.y, minCamaraPos.y, maxCamaraPos.y),
                Mathf.Clamp(transform.position.z, minCamaraPos.z, maxCamaraPos.z));
        }
    }

 
 

Si crees que no es de este codigo, mira a ver si hay algun script de algun asset (puede ser si has descargado alguno) que altere la camara, de todas formas la variable Bound de tipo bool cuando la usas?, por que si no es llamada por otro script tienes codigo inaccesible en este script.

····>Desarrollando un videojuegos online-arcade para Android.


····>Programador en:C,C#,VB.net,PHP,HTML5,SQL,JS,Ruby.


····>Trabajando en: Desarrollo de paginas web y bushistudios.


                    ๑۩۞۩๑_(▀▄)KINGTRASE()_๑۩۞۩๑ 



el bound le paso a true de forma manual para que funcione, y no tengo ningun asset 

Noviembre 22, 2016, 02:30:26 PM #9 Ultima modificación: Noviembre 22, 2016, 02:31:36 PM por kingtrase
podrias hacer un video? y enseñarnos mejor?, y enseñar el inspector de camera.
 
O no puede ser que de alguna forma estes cargando el nivel dos veces? piensa que le das a play y se carga, y luego tu script de cargar se vuelve a ejecutar. ese puede que sea el problema
 
Prueba deshabilitando ese script y ejecuta el juego a ver, Un saludo, di si fue la solucion, voy a comer :)

····>Desarrollando un videojuegos online-arcade para Android.


····>Programador en:C,C#,VB.net,PHP,HTML5,SQL,JS,Ruby.


····>Trabajando en: Desarrollo de paginas web y bushistudios.


                    ๑۩۞۩๑_(▀▄)KINGTRASE()_๑۩۞۩๑ 




public bool Open = false;    //este bool es pasado a true en otro script al usar el boton enter
    public bool WithCollider;   //este bool lo coloco manualmente para otras situasiones
    public bool Starter;    //este es para un boton del inicio para que vaya al ultimo nivel iniciado cuando es true , cuando es false carga el nivel indicado
    public int levelToLoad;  //nivel indicado
    private AsyncOperation o;
    private GameMaster gm;
    void Start()
    {
        gm = GameObject.FindGameObjectWithTag("GameMaster").GetComponent<GameMaster>();
    }
void Update()
    {
        if (Open)
        {
            Load();
            Open = false;
        }            
    }
void Load()
    {
        if (Starter)
        {
            if (gm.Uno)
            {
                o = SceneManager.LoadSceneAsync(PlayerPrefs.GetInt("A",1));
            }
            if (gm.Dos)
            {
                o = SceneManager.LoadSceneAsync(PlayerPrefs.GetInt("B", 1));
            }
            if (gm.Tres)
            {
                o = SceneManager.LoadSceneAsync(PlayerPrefs.GetInt("C", 1));
            }
        }
        else
        {
            o = SceneManager.LoadSceneAsync(levelToLoad);    // starter = false
        }
       
    }
void OnGUI()
    {
            if (o != null)
            {
                GUI.Box(new Rect(0, Screen.height - 40, o.progress * Screen.width, 40), "");     //barra de progreso o carga de nivel
            }
    }
    void OnTriggerEnter2D(Collider2D col)
    {
        if (WithCollider) {
            if (col.CompareTag("Player"))
            {
                Open = true;
            }
        }
    }

 
este es el codigo que carga los niveles

Noviembre 22, 2016, 03:05:46 PM #11 Ultima modificación: Noviembre 22, 2016, 03:06:25 PM por kingtrase
has cargado la escena sin ese script? carga la escena del nivel donde te tiembla la camara, no la  escena de seleccion de nivel

····>Desarrollando un videojuegos online-arcade para Android.


····>Programador en:C,C#,VB.net,PHP,HTML5,SQL,JS,Ruby.


····>Trabajando en: Desarrollo de paginas web y bushistudios.


                    ๑۩۞۩๑_(▀▄)KINGTRASE()_๑۩۞۩๑ 



no es un nivel especifico es cualquier nivel aveces si aveces no 

buff, entonces seria ver todo tu proyecto... no se me ocurre nada asi de pronto... voy a pensar un poco y te dire algo.

····>Desarrollando un videojuegos online-arcade para Android.


····>Programador en:C,C#,VB.net,PHP,HTML5,SQL,JS,Ruby.


····>Trabajando en: Desarrollo de paginas web y bushistudios.


                    ๑۩۞۩๑_(▀▄)KINGTRASE()_๑۩۞۩๑ 



mmm podria ser que en Start no estas inicializando Open, entonces cuando cargas un nivel (despues de Open()) el objeto se borra, se carga uno nuevo y no llega a ponerse en false ..?::?
 
Proba hacer esto el Open y el update me parece que estan de mas
 
podes hacer eso dentro del OnTriggerEnter y eliminas el update, a ver que pasa
 

void OnTriggerEnter2D(Collider2D col)
    {
   if (col.CompareTag("Player")){            
           if (WithCollider) {                        
                 Load();
            }
        }
    }

 
Como tenes las escenas configuradas? o sea como es el gameMaster ese?, pone una imagen en sceneView con el objeto "cargador de escenas" seleccionado cosa de ver todo lo que tiene
 
Saludos

Etiquetas: