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. | ||
<code> | |||
using System.Collections; | using System.Collections; | ||
using System.Collections.Generic; | using System.Collections.Generic; | ||
| Zeile 6: | Zeile 6: | ||
using UnityEngine.UI; | using UnityEngine.UI; | ||
public class | public class <span style="background-color:yellow;">deinscriptname</span>: MonoBehaviour | ||
{ | { | ||
public Camera playerCamera; | |||
void Update() | void Update() | ||
{ | { | ||
{ textDebug.text = "TOUCHED"; | { textDebug.text = "TOUCHED"; | ||
PerformRaycast(); | PerformRaycast(); | ||
} | } | ||
else | else | ||
{ | { | ||
| Zeile 35: | Zeile 22: | ||
hitStatus = 0; | hitStatus = 0; | ||
} | } | ||
if (Input.touchCount >0 && Input.GetTouch(0).phase==TouchPhase.Began) | if (Input.touchCount >0 && Input.GetTouch(0).phase==TouchPhase.Began) | ||
{ | { | ||
| Zeile 40: | Zeile 28: | ||
PerformRaycast(); | PerformRaycast(); | ||
} | } | ||
} | } | ||
| Zeile 55: | Zeile 38: | ||
touchedObjectText.text = ray.ToString(); | touchedObjectText.text = ray.ToString(); | ||
rayTest.transform.position = myRay.origin; | rayTest.transform.position = myRay.origin; | ||
rayTest.transform.LookAt(myRay.direction); | rayTest.transform.LookAt(myRay.direction); | ||
{ | { | ||
touchedObjectText.text = "HIT!"; | touchedObjectText.text = "HIT!"; | ||
| Zeile 96: | Zeile 75: | ||
} | } | ||
</code> | |||
Version vom 1. April 2020, 18:52 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 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";
}
}
}