Hola compañeros,
he buscado en el foro y no he visto nada, y lanzó la pregunta. Ahora que estoy finalizando mi segundo juego, para el tercero me quiero lanzar al cardboard, y daydream, vamos VR. He realizado ya pruebas con éxito, siguiendo tutoriales y consejos. Pero no he conseguido que un objeto siga a la cabeza.
me explicó, mi juego vr, será un tipo pong, salvando las diferencias, en vr y la pala debería ser movida por la cabeza. Lo he intentado mirar mediante el raycast, pero mmm... me surgen dudas y no he conseguido que ande del todo fino. Este es el código que tengo (Se que no es exactamente para mover la pala, pero es una prueba para ver si todo funciona, y no hay forma :().
En el fixed udpated del Player Controller tengo:
RaycastHit dotHit;
Vector3 rayDirection = mainCam.transform.TransformDirection(Vector3.forward);
Vector3 rayStart = mainCam.transform.position + rayDirection;
bool raycast = false;
GameObject obj = null;
if (isGrabbing)
{
Grabbing();
if (Input.GetAxis("Right Trigger") == 0 || Input.GetAxis("Left Trigger") == 0)
Drop();
}
else
{
if (Input.GetAxis("Right Trigger") > .1 || Input.GetAxis("Left Trigger") > .1)
{
raycast = Physics.Raycast(rayStart, rayDirection, out dotHit, 5f);
obj = dotHit.transform != null ? dotHit.transform.gameObject : null;
if (obj != null && obj.GetComponent<Grabable>() != null)
{
obj.GetComponent<Rigidbody>().isKinematic = true;
obj.GetComponent<Rigidbody>().useGravity = false;
obj.GetComponent<DotController>().isBusy = true;
grabableObj = obj;
isGrabbing = true;
manager.PlaySound("grunt");
}
}
}
Y en el helper tengo lo siguiente:
void Grabbing()
{
grabableObj.transform.position = Vector3.Lerp(grabableObj.transform.position,
mainCam.transform.position + mainCam.transform.TransformDirection(Vector3.forward) * 5,
Time.deltaTime * 4);
Vector3 forward = mainCam.transform.TransformDirection(Vector3.forward) * 5;
Debug.DrawRay(mainCam.transform.position, forward, Color.green);
}
void Drop()
{
isGrabbing = false;
grabableObj.GetComponent<Rigidbody>().isKinematic = false;
grabableObj.GetComponent<Rigidbody>().useGravity = true;
grabableObj.GetComponent<DotController>().isBusy = false;
grabableObj = null;
}
Aprovecho, si conoceis algún tutorial del estilo, y que haga las cosas mejor, si pudieseís pasarmelo para echarle un ojo, os lo agradecería infinitamente. Pensaba que iba a ser más fácil, pero creo que me he metido en un berenjenal de los buenos XD
Un saludo y gracias