Raycasts

Aus hyperdramatik
Zur Navigation springen Zur Suche springen

Raycasts dienen dafür, eine unsichtbare Achse von einem bestimmten Punkt in die Welt zu schlagen. In VR sind sie nützlich, um den Blicken der Benutzerin zu folgen. In AR können sie benutzt werden um eine Achse von der Kamera des Benutzer in die reale Welt zu projizieren, reale Projekte zu berühren und auf dem Tablet interagierbar zu machen.

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class deinscriptname: MonoBehaviour { public Camera playerCamera;

void Update() { { textDebug.text = "TOUCHED";

    PerformRaycast();

}

       else
       {
           textDebug.text = "NO TOUCH";
           hitStatus = 0;
       }
       if (Input.touchCount >0 && Input.GetTouch(0).phase==TouchPhase.Began)
       {
           textDebug.text = "RAYCAST";
           PerformRaycast();
       }
   }
   void PerformRaycast()
   {
       Vector3 ray = playerCamera.ScreenToWorldPoint(Input.GetTouch(0).position);
       Ray myRay = playerCamera.ScreenPointToRay(Input.GetTouch(0).position);
       RaycastHit hit;
      
       
       touchedObjectText.text = ray.ToString();
       rayTest.transform.position = myRay.origin;
       rayTest.transform.LookAt(myRay.direction);


       {
           touchedObjectText.text = "HIT!";
           Debug.DrawRay(ray, transform.TransformDirection(Vector3.forward) * hit.distance, Color.yellow);
           hitGameObject = hit.collider.gameObject;
           touchedObjectText.text =hitGameObject.name.ToString();
           
           
           if (hitGameObject.name == "ToBeHit" && hitStatus == 0) {
               SendOSC.OscMsgStuhl(ledStatus);
               hitStatus = 1;
               if (ledStatus==0) {
                   ledStatus = 1;
               }
               else { ledStatus = 0; }
               textDebug.text = "OSC";
           }
           // Debug log this: hit.collider.gameObject.name;
           //zum material:
           //hitGameObject.GetComponent<Renderer>().material;
       }
       else
       {
           //no hit! i repeat, no hit!!
           //touchedObjectText.text = "NO HIT";
       }
   }

} </source>