Noticias

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

disparar hacia el mouse ?

Iniciado por mutoit, Mayo 28, 2017, 01:02:01 AM

Tema anterior - Siguiente tema
Hola, llevo ya muchas horas y no lo consigo....
 
Quisiera girar al player hacia donde movemos el cursor, pero solo en x, o en el eje y creo que se diria, y luego, que las balas sigan esa trayectoria....
 
Alguien me podria indicar , de que consta esto ?, que es lo que me tengo que plantear para hacerlo. Ademas,no entiendo lo de los quaternions, eulers, he leido que tengo que hacer un raycast desde la camara,tomar la posicion del mouse  etc....un lio.
 
Por cierto, la camara la tengo mirando completamente desde arriba, es como uno de esos juegos antiguos,...
 
Si teneis alguna explicacion o links , os lo agradeceria.
 
 
 
 

Hola, tu problema se soluciona en partes:
 


  •    detectar el punto espacial en el que sale un rayo desde la camara hacia a delante (un raycast como bien decis). Eso te va a dar un punto en el que te interesa su x y z la altura supongo que si buscar solo direccion no te importa, pero puede que si a futuro, no lo se, no importa, ya tenes el punto


  •    decirle a tu personaje que gire hacia dicho punto. Para que gire podes usar la funcion LookAt que lo que hace te acomoda tu rotation de tal forma que le pasas un punto del espacio y el target de la funcion mira siempre a dicho punto.


  •    La parte de las balas es la mas facil no tenes que indicar nada de dicho punto, las balas entienden solo una cosa, tienen que salir disparadas hacia adelante, el tema del giro ya lo resolviste en el punto anterior.


saludos

Mayo 28, 2017, 10:28:35 AM #2 Ultima modificación: Mayo 28, 2017, 11:36:24 PM por pioj
Hola ! gracias.
 
El problema lo tengo porque la camara no gira, esta arriba ,tiene un look at y follow....el ray se queda quieto....
 
vale listo, le puse esto al player 
 

RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if(Physics.Raycast(ray,out hit,100)) {
transform.LookAt(new Vector3(hit.point.x,transform.position.y,hit.point.z));
}

 
ahora se gira y dispara donde el mouse, muchas gracias !!!
 
Si no entendi mal, sea como sea, para obtener la posicion del mouse, es la camara quien tiene que hacer ese scaneo no ?

Cita de: mutoit date=1495960115El problema lo tengo porque la camara no gira, esta arriba ,tiene un look at y follow....el ray se queda quieto....
   


lo del lookAt te lo decia que lo hagas con el player hacia el punto de colision del mouse, osea no necesariamente lo haces con una camara, sino que con cualquier objeto, lo rota alineando su forward para que mire a un punto especifico.
 
Cita de: mutoit date=1495960115Si no entendi mal, sea como sea, para obtener la posicion del mouse, es la camara quien tiene que hacer ese scaneo no ?
   


Para obtener el punto en el mundo me parece que tenes que usar ScreenToPoint ?¿?¿ la verdad es que cada vez que lo tengo que usar tengo que usar el manual para buscarlo, pero si, esto se hace desde una camara porque tenes que ver al mundo desde algun lado. Si lo que queres es la posicion simplemente (coordenadas de pantalla) usa Input.mousePosition.

vale muchisimas gracias de verdad !!!!

Etiquetas: