Raycasts: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Fabian (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Fabian (Diskussion | Beiträge) 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. | ||
<source lang=csharp> | <source lang=csharp> | ||
using System.Collections; | using System.Collections; | ||
| Zeile 76: | Zeile 75: | ||
} | } | ||
</source> | </source> | ||
Version vom 1. April 2020, 18:59 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";
}
}
}