Noticias

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

Disparar un objeto en la dirección en la que mira el objeto al que está emparentado

Iniciado por Wazabee, Mayo 26, 2017, 08:12:17 PM

Tema anterior - Siguiente tema
Hola a tod@s,
 
Estoy haciendo pruebas con un proyecto tipo "Frontón". 3 paredes, suelo, raqueta y pelota. La pelota está emparentada a la raqueta y, ésta última, además de moverse hacia adelante, hacia atrás, hacia izquierda y derecha, también puede girar hacia derecha e izquierda. Todo funciona como es de esperar excepto que, si la pala está recta, mirando a la pared frontal, al disparar la pelota, ésta sale en dirección a la pared frontal. Hasta aqui, guay. Pero si giro la pala hacia una de las paredes laterales, la pelota sale también en línea recta hacia la pared frontal, no hacia los lados como sería lo que tendría que hacer. Adjunto el fragmento de código que controla el disparo de la pelota:
 

var rb : Rigidbody;                        
var velocidadInicialHorizontal : float = 1000f;
var velocidadInicialVertical : float = 450f;
var raqueta : GameObject;                   //Variable que llama al objeto "pala" para poder controlar ciertas características
var recuperacion : boolean = true;          //Variable que controla cuándo podemos recoger la pelota y cuando no
var pelotalanzada : boolean = true;         //Variable que regula cuando la pelota está en juego para que no pueda ser re-lanzada cuando está en el aire
 
function Update () {
if (Input.GetButtonDown ("Jump") && pelotalanzada == true) {     // Al presionar la tecla "Espacio" lanzamos la pelota
       
        transform.parent = null;        //Desvinculamos la pelota de la pala
        pelotalanzada = false;          //Al ser esta variable FALSE la tecla "Espacio" deja de funcionar para no poder re-lanzar la pelota
        rb.isKinematic = false;    
        rb.AddForce (new Vector3 (, velocidadInicialVertical, velocidadInicialHorizontal)); //Disparamos la pelota. **** De momento, aunque la pala esté girada, la pelota sale siempre hacia la pared frontal ****
    }
}

 
Entiendo que, para hacer lo que quiero, la sentencia "rb.AddForce (...)" debería tener como "new Vector3" la dirección en la que está mirando la raqueta. El tema está en que no se como relacionar la orientación de la raqueta con el AddForce de la pelota...Alguna idea, sugerencia o similar por favor? Espero haberme explicado bien...
 
Gracias

deberia funcionar simplemente añadiendo
 

rigidbody.AddForce(raqueta.transform.forward * velocidad);

 
 


Etiquetas: