Derzeit stoße ich ein Problem auf iOS-Plattform. Grundsätzlich lade ich einen Pfeil, der nach Osten in 2D-Umgebung zeigt (nach oben ist Norden, links ist Westen, rechts ist Osten und unten ist Süden). Ich erwarte, dass es in der 3D-Umgebung auf echten Osten zeigen kann, so dass es sich automatisch in die richtige Richtung dreht. Ich zeichne ein Bild, um meine Situation genau zu beschreiben. (Der gepunktete Pfeil ist mein loaded Pfeil und der feste Pfeil, was ich will, wenn ich Kern Bewegungsdaten verwenden)Zeigen auf die richtige Richtung in SceneKit
Jetzt habe ich
let motionManager = CMMotionManager()
motionManager.deviceMotionUpdateInterval = 1.0/60.0
if motionManager.isDeviceMotionAvailable {
motionManager.startDeviceMotionUpdates(to: OperationQueue.main, withHandler: { (devMotion, error) -> Void in
parent_arrows[0].orientation = SCNQuaternion(-CGFloat((motionManager.deviceMotion?.attitude.quaternion.x)!), -CGFloat((motionManager.deviceMotion?.attitude.quaternion.y)!), -CGFloat((motionManager.deviceMotion?.attitude.quaternion.z)!), CGFloat((motionManager.deviceMotion?.attitude.quaternion.w)!))
})}
Das Snippet kann nicht automatisch das machen Pfeil dreht sich in die richtige Richtung. Meine Idee ist, den Winkel zwischen dem Gerät und dem Norden zu bekommen und dann diesen Winkel auf die Ausrichtung des Pfeils anzuwenden. Aber wie kann ich den Winkel zu einer Quaternion hinzufügen? Und gibt es eine andere Idee, dies zu erreichen?
Was ist das eigentliche Problem? Wird "parent_arrows [0]" aktualisiert und das Update wird nicht angezeigt? Wird 'parent_arrows [0]' nicht aktualisiert? Wird es aktualisiert und zeigt die falsche Ausrichtung? – Grimxn
Machen Sie die Frage einfach, ich lade einen 3D-Pfeil und ich möchte, dass dieser Pfeil auf die Richtung zeigt (zum Beispiel: Osten). Ich habe geantwortet, was ich unten bekommen habe, aber es scheint, dass das Gimbal Lock herauskommt. – OtakuFitness