Noticias

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

Problemas con movimiento y cámara

Iniciado por Bousing, Diciembre 13, 2015, 12:36:44 AM

Tema anterior - Siguiente tema
Saludos a todos    Escribo porque estoy desarrollando un videojuego y tengo varios problemas.    El juego en realidad es para android, pero como tenía problemas con el GUITexture ya que no se por que no lo reconoce cuando lo instalo tuve que buscar otra alternativa y fue con el boton del canvas, que me pareció muy sencillo y por ahora es multiplataforma, funciona en android y PC (razón por la cual posteo mis problemas en la sección de pc y web).    Como bien dije, ya tengo mis controles de movimientos, por ahora solo he hecho dos, para la izquierda y derecha. Pero mi problema es que el personaje se mueve con su respectiva animación pero llega un punto que se detiene y se devuelve como si estuviese haciendo el paso de la luna de  Michael Jackson, cosa que no debería pasar.   Comparto el código para ver si tuve algún error (que no creo), o a lo mejor el error es de la animación, el personaje lo hice con sprites separados, es decir las piernas,brazos,etc. Todo esta separado y lo anime con el animation y la lógica los estados con el animator.
    public float speed;
    private bool izquierda;
    private bool derecha;
    public GameObject player;
    private Animator animator;
    private float posicion = -167;    // Use this for initialization
    void Start () {
        animator = player.GetComponent<Animator> (); //SE INICIALIZA EL Animator DEL PERSONAJE    }
    
    // Update is called once per frame
    void Update () {        if (izquierda) {
            player.transform.Rotate(0,posicion,0);
            animator.SetBool("Right",false); //SE DESACTIVAN LAS ANIMACIONES DE CORRER HACIA LA DERECHA
            animator.SetBool("Left",true); //SE ACTIVAN LAS ANIMACIONES DE CORRER HACIA LA IZQUIERDA
            animator.SetFloat("Speed",speed);
            //float atras = speed * -1;
            player.transform.Translate(Vector3.left * Time.deltaTime * speed); //EL JUGADOR SE MUEVE HACIA LA IZQUIERDA
        }        if (derecha) {
            player.transform.Rotate(0,0,0); //EL PERSONAJE ROTA HACIA LA DERECHA
            animator.SetBool("Left",false); //SE DESACTIVAN LAS ANIMACIONES DE CORRER HACIA LA IZQUIERDA
            animator.SetBool("Right",true); //SE ACTIVAN LAS ANIMACIONES DE CORRER HACIA LA DERECHA
            animator.SetFloat("Speed",speed);
            //player.transform.Translate(speed * Time.deltaTime * Vector3.right,0,0); //EL JUGADOR SE MUEVE HACIA LA DERECHA
            this.transform.Translate(Vector3.right * Time.deltaTime * speed);
        }
    
    }    //FUNCIONES PUBLICAS    public void MoverDerecha(){
        derecha = true;
    }    public void MoverIzquierda(){
        izquierda = true;
    }    public void Stop(){
        derecha = false;
        izquierda = false;
        animator.SetFloat("Speed", 0);
    } Mi otro problema es con la cámara. Tengo un script para que la cámara principal siga al personaje pero cuando lo ejecuto el personaje se ve incompleto, como en la imagen que adjunto.  El código que use fue este  public Transform Personaje;
    void Update () {
        //transform.position = new Vector3 (Personaje.position.x, Personaje.position.y, Personaje.position.z);
        transform.position = new Vector2 (Personaje.position.x, Personaje.position.y);
    }Como la primera linea de la función hacía lo mismo, intente con la segunda (despreciando el eje z) pero también hace lo mismo, el personaje se ve incompleto. Si alguien sabe que esta pasando con al menos uno de mis dos problemas, se lo agradecería   saludos

Etiquetas: