uumli Geschrieben 15. Februar 2020 Melden Share Geschrieben 15. Februar 2020 Hallo, ich habe ein kleines Problem mit der Benutzung des Gyroskops. Mein Setup: Ich habe eine Szene, in der sich eine Kamera (+ Cube als Repräsentierung des Handys) mit dem Gyroskop bewegen soll. Ich habe mein iPhone (mit der App Unity Remote) mit einem Kabel, an meinen Rechner angeschlossen und es über Edit > Projects Settings > Editor > Unity Remote > Device ausgewählt. Ich habe das Verwendete Skript mal herunter gekürzt: using System.Collections; using System.Collections.Generic; using UnityEngine; public class GyroTest : MonoBehaviour { private GameObject camHolder; // Start is called before the first frame update void Start() { camHolder = new GameObject("Camera Holder"); camHolder.transform.position = transform.position; transform.SetParent(camHolder.transform); camHolder.transform.rotation = Quaternion.Euler(90f, 90f, 0f); } // Update is called once per frame void Update() { transform.localRotation = Input.gyro.attitude * new Quaternion(0, 0, 1, 0); } } Das Problem: Ich sitze hier jetzt leider ratlos da, weil die Rotation nicht wie erwartet funktioniert. Ich versuche es mal zu beschreiben: Wenn ich mein Telefon entlang der Z-Achse rotiere, tut dies meine Camera auch. Rotiere ich es mit der Y-Achse, erhalte ich nur ein "Zittern". Um die X-Achse, rotiert die Kamera in Unity um mehrere Achsen. Ich weiß, dass diese Beschreibung das Problem eher semigut erläutert, daher habe ich mein Projekt als Unity Package beigefügt. Vielen Dank Gyroskop.unitypackage Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TheOnlyOne Geschrieben 18. Februar 2020 Melden Share Geschrieben 18. Februar 2020 Wenn du etwas mit Null multiplizierst, dann bekommst du Null, oder? 😁 So sollte es funktionieren: transform.localRotation = Input.gyro.attitude; Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
uumli Geschrieben 8. März 2020 Autor Melden Share Geschrieben 8. März 2020 Am 18.2.2020 um 14:20 schrieb TheOnlyOne: Wenn du etwas mit Null multiplizierst, dann bekommst du Null, oder? 😁 So sollte es funktionieren: transform.localRotation = Input.gyro.attitude; Verzeihung, ich habe nicht mitbekommen, dass ich hier eine Antwort erhalten habe. Leider funktioniert es nicht so. Nach oben und unten neigen funktioniert. Um die Y-Achse geht das nicht... Wenn ich das Smartphone wie ein Lenkrad rotiere, rotiert sich mein Objekt in Unity auch so, jedoch zusätlich auch noch um die Y-Achse. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TheOnlyOne Geschrieben 9. März 2020 Melden Share Geschrieben 9. März 2020 Am 8.3.2020 um 15:55 schrieb Vermentex: Verzeihung, ich habe nicht mitbekommen, dass ich hier eine Antwort erhalten habe. Leider funktioniert es nicht so. Nach oben und unten neigen funktioniert. Um die Y-Achse geht das nicht... Wenn ich das Smartphone wie ein Lenkrad rotiere, rotiert sich mein Objekt in Unity auch so, jedoch zusätlich auch noch um die Y-Achse. Versuch einfach mal transform.rotation = Input.gyro.attitude; Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
uumli Geschrieben 9. März 2020 Autor Melden Share Geschrieben 9. März 2020 vor 3 Stunden schrieb TheOnlyOne: Versuch einfach mal transform.rotation = Input.gyro.attitude; Das hatte ich sogar schon versucht. Leider mit dem gleichen Ergebnis. Die physische Rotation um die Z-Achse bewegt das Objekt in Unity um die Y- und Z-Achse, wobei die Rotation um die physische Y-Achse nicht verarbeitet wird. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.