Noticias

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

Seguir a un target

Iniciado por Oaken3d, Diciembre 31, 2015, 08:01:34 PM

Tema anterior - Siguiente tema

buena gente, tengo un problema a ver si alguien me puede ayudar ya que lo de las rotaciones y los quartenions en unity aun no los entiendo bien y he estado teniendo muchos problemitas, al menos muchos ya los tengo resueltos pero tengo uno que aun no puedo. Lo que ando buscando es hacer una especie de smooth follow desde un punto hacia otro punto, lo que estoy tratando de hacer es una especie de proyectil que siga al jugador, he usado mucho lo que es moveToward, smothDamp entre otro pero no consigui el efecto que necesito ya que el seguimiento del proyectil siempre va directo hacia el objetivo con la velocidad smooth, pero lo que necesito es que el proyectil vaya hacia adelante y el smoot que sea la rotación y claro tratando de seguir al objetivo. Aqui les dejo un Video de el efecto de los proyectiles que ando buscando, espero me puedan ayudar
muchas graciashttps://www.youtube.com/watch?v=YVJ25QT34VM


transform.LookAt(ObjetoASeguir.transform); <-- esto para mirar al objeto continuamentetransform.Translate(Vector3(0, 0, 1) * 1); <-- esto para mover el objeto en el eje Z(puedes cambiarlo en el Vector)

ok, se me olvido mencionar que el juego en un juego 2d asi que al al usar esas funciones me pasa que se me va el objeto hacia el eje z, pero bueno, ya tengo el script para que el objeto gire suavemente hacia el target pero cuando uso el traslate si el objeto a seguir esta de el lado derecho todo funciona de maravilla pero cuando me voy hacia el lado izq es como que dismunuye mucho la velocidad, estre es el codigo que ahora estoy usando 
    Vector3 vectorToTarget = player.transform.position - transform.position;

        float angle = Mathf.Atan2(vectorToTarget.y, vectorToTarget.x) * Mathf.Rad2Deg;

        Quaternion q = Quaternion.AngleAxis(angle, Vector3.forward);

        projectileRb.velocity = Vector2.right;

        transform.localRotation = Quaternion.Slerp(transform.rotation, q, Time.deltaTime * rotatioSpeed);
        transform.Translate(Vector3.right *.05f);
 

Etiquetas: