Die neuen DayDream-Beispiele von Google verwenden das Ereignissystem, um festzustellen, ob sich der Mauszeiger auf einem Objekt befindet. Früher war es durchaus nicht so arbeitet, war es ein Absehen, und Sie würden dann eine Raycast zwischen der Kamera und dem Absehen, wie erstellen:DayDream, Erkennungszeiger ohne Verwendung des Ereignissystems
Vector3 rayDirection = GvrController.Orientation * Vector3.forward;
if (Physics.Raycast(origin, rayDirection, out hitInfo, Mathf.Infinity)) {
Und dann, wenn Sie erkennen, ein bestimmtes Objekt ist zwischen dem Absehen und der Kamera.
Dieser Weg funktioniert nicht mehr genau. Google verwendet nun das Ereignissystem und prüft dann, ob das Fadenkreuz auf einem Objekt positioniert ist. Gibt es eine Möglichkeit für mich, das für jedes Objekt zu überprüfen, ohne das Event System zu benutzen. Das Ereignissystem ist eine gute Methode, ich habe nur ungefähr 40 verschiedene Objekte, die alle auf die gleiche Weise arbeiten, und die Implementierung eines Ereignispunktes/Klick für diese 40 verschiedenen Objekte scheint wie ein Overkill zu sein, wenn ich vorher einfach einen prüfen konnte Objekt für Tag.
Jeder konnte durch Zufall feststellen, ob der Zeiger auf einem Objekt positioniert ist, ohne das Event-System zu verwenden. Raycasts scheinen nicht mehr richtig zu funktionieren, da der Mauszeiger mehr wie ein 2D-Objekt aussieht, genau wie eine Maus.
Dies funktioniert etwa, aber nicht sehr gut:
Vector3 origin = Head.transform.position + GvrController.ArmModel.wristPosition;
Vector3 rayDirection = GvrController.ArmModel.pointerRotation * Vector3.forward;
Jede Hilfe würde geschätzt :)
Bisher habe ich versucht, aufgegeben, und ein Ereignis ausgelöst wird, um meine 46 Objekte :(hinzufügen. – xtrimsky