Noticias

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

Algunas dudas sobre VR

Iniciado por Lapigames, Junio 27, 2018, 09:39:07 AM

Tema anterior - Siguiente tema
Junio 27, 2018, 09:39:07 AM Ultima modificación: Junio 27, 2018, 03:46:49 PM por Lapigames
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

Etiquetas: