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
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);
}
}
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.
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);
}
}
Eres los más! Me has ayudado mucho lightbug, me has desencallado de mi problema. Gracias.