Jump to content
Unity Insider Forum

Input.gyro.attitude - Nutzen des Gyroskops


uumli

Recommended Posts

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

  • 3 weeks later...
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

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

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

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...