Noticias

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

Player rotar en eje Y mirando ratón

Iniciado por yhuj, Noviembre 14, 2016, 08:47:32 PM

Tema anterior - Siguiente tema


Hola gente, estos días estaba probando de crear un shooter pero me he encontrado con el problema que no sé cómo hacer ni cómo empezar para hacer que mi Player en tercera persona rote en el eje Y mirando a la posición del ratón. ¿Qué debería hacer?
 


Gracias por el aporte


Hola, me rei mucho con el titulo , parecen tags jajaja
 
Rotar en Y (arriba) es el "Yaw" creo, no se si es lo que queres, es decir girar hacia los costados.
 
Tampoco se sabe si queres rotar los brazos de tu player (con el arma), falta un poco de informacion a mi parecer, es que el metodo un poco depende de estas cosas.
 
Algo que podes hacer en tercera persona es enparentar la camara a un objeto que se encuentra en la posicion del personaje (tiene que ser un objeto nuevo) y rotar dicho objeto mediante codigo, entonces el personaje sigue igual, el objeto que rota es el objeto centrado y la camara esta por detras siguiendo dicha rotacion. Por ejemplo en skyrim o fallout cuando no equiás el arma y la camara enfoca al personaje
 
 
 
Por ejemplo este es mi version de MouseLook (es para primera persona en C#)
 

using UnityEngine;
using System.Collections;
public class Player_Camera : MonoBehaviour {
private float sensitivity;
private Transform cam;
float anglePitch;
void Start () {
   cam = Camera.main.transform;
   anglePitch = 0;
   sensitivity = 2;
}

void Update () {
   anglePitch -= Input.GetAxis ("Mouse Y");
   if (anglePitch > 90)
      anglePitch = 90;
   if (anglePitch < -90)
      anglePitch = -90;
   transform.eulerAngles += new Vector3 (0 , sensitivity * Input.GetAxis ("Mouse X"), 0);
   cam.localEulerAngles = new Vector3 (anglePitch , 0, 0);
 
}
}

 
fijate que el Player (padre de la camara) giro solo para los costados, obvio la camara tambien, para el Pitch (arriba y abajo) gira solo la camara, si es tercera persona podes ademas enparentar (a la camara) los brazos con el arma y la cabeza ponele (si es un shooter), quedando el resto del cuerpo inmutable.
 
El script se lo pones al modelo del player y creo que deberia funcionar
 
Salu2!
 
 


Muchas gracias! Este código me es muy útil y lo utilizaré. Pero... siento decirte que no es exactamente lo que buscaba. Perdón por no expresarme muy bien.  Yo me refería más bien que, el player en tercera persona rotara en el "yaw" como tú muy bien decías,  según la posición del mouse. Con otras palabras, si tengo el ratón en la parte superior-centro de la pantalla el player mirase justo delante. En el caso que lo tuviese, por ejemplo, el mouse en la esquina inferior derecha, el player rotase mirando hacia allí, abajo a la derecha. En definitiva lo que me refería la otra vez es que en función de donde este el mouse en la pantalla, el player rotaria el "yaw" mirando hacia esa dirección. Así podría apuntar mejor el personaje hacia donde quiero disparar.


Ah, un estilo RTS pero sin hacer click, que siempre lo haga, podes usar LookAt y le pasas que lo haga hacia un vector que concuerda con la posicion del mouse.
 
Aca te dejo un ejemplo:
 

   RaycastHit rhit;
Camera cam;
GameObject target;
void Start () {
   target = new GameObject ("target");
   cam = Camera.main;
   print (Camera.main.name);
}

void Update () {
   print (Input.mousePosition);
   Ray ray = cam.ScreenPointToRay (Input.mousePosition);
 
   if (Physics.Raycast (ray, out rhit)) {
      
      transform.LookAt (rhit.point);
      transform.eulerAngles = new Vector3 (0, transform.eulerAngles.y, 0);
   
   }
 
}

 
Solo gira en Yaw, esto se lo aplicas al personaje y deberia funcionar
 
 


Eres los más! Me has ayudado mucho lightbug, me has desencallado de mi problema. Gracias.


De nada, Me alegro que funcione! cuando termines el juego subilo ;)
 
Un abrazo
 
 

Etiquetas: