Raycasts: Unterschied zwischen den Versionen

Aus hyperdramatik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
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.  
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.  
<code>
<code>
<source lang=*>
using System.Collections;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UI;
public class <span style="background-color:yellow;">deinscriptname</span>: MonoBehaviour
public class <span style="background-color:yellow;">deinscriptname</span>: MonoBehaviour
{
{
 
public Camera playerCamera;  
public Camera playerCamera;  
    
    
    void Update()
void Update()
    {
{
        { textDebug.text = "TOUCHED";
  { textDebug.text = "TOUCHED";
            PerformRaycast();
    PerformRaycast();
        }
    }


         else
         else
Zeile 75: Zeile 75:


}
}
</source>
</code>
</code>

Version vom 1. April 2020, 18:58 Uhr

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 <span style="background-color:yellow;">deinscriptname</span>: 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";
        }
    }

}