2016-06-19 6 views
0

Ich betrachte mich immer noch als Anfänger, wenn es um Unity und C# geht, also tut es mir leid, wenn sich herausstellt, dass dies eine einfache Lösung ist, aber jede Hilfe wäre geschätzt.Unity3D (5.3.5) Aufkleber instanziieren mit falscher Drehung

Was ich versuche zu tun:
Der Spieler kann mit Würfeln in der Welt interagieren und ich möchte ihnen Feedback geben. Dafür habe ich ein Prefab eines Flugzeugs mit der Textur eines Handabdrucks. Die Interaktion erfolgt mit einem Raycast und der Handabdruck soll am Trefferort instanziiert werden.

Dies ist das Skript, das ich für das schrieb:

Ray ray = new Ray (Camera.main.transform.position, Camera.main.transform.forward); 
RaycastHit hitInfo; 

if (Physics.Raycast (ray, out hitInfo, usabilityRange)) { 
    Vector3 hitPoint = hitInfo.point; 
    GameObject go = hitInfo.collider.gameObject; 

    hasInteract h = go.GetComponent<hasInteract>(); 

    if (h != null) { 
     h.toggleText(); 
     if (interactPrefab != null) { 
      Quaternion rotation = Quaternion.FromToRotation(Vector3.up, hitInfo.normal); 
      Instantiate (interactPrefab, hitPoint, rotation); 
     } 
    } 
} 

Was falsch läuft:
Das Quaternion wird von fast jedem Tutorial ich zu diesem Thema gefunden habe, aber wenn ich diese auf eine Normaler Würfel, instanziiert das Abziehbild mit einer anderen Drehung auf jeder Würfelfläche (z. B. Finger, die auf einer Seite nach links und auf der anderen nach oben zeigen usw.). Im Moment habe ich keine Ahnung, wie ich die Rotation berechnen soll, so dass die Finger der Hand immer nach oben zeigen, egal aus welcher Richtung der Würfel aktiviert wird (abgesehen von der Spitze).

Nochmals vielen Dank für das Lesen dieser Textwand!

Antwort

1

Das Problem besteht darin, dass Ihre Rotationsmethode einen zusätzlichen Freiheitsgrad hat. Stellen Sie sich vor, Sie könnten den Vektor in beliebiger Richtung "drehen", während er sich in die anderen beiden Achsen dreht. Um es zu umgehen, können Sie versuchen, eine andere Quaternion-Funktion zu verwenden: Quaternion.LookRotation. Dieser definiert eine Aufwärts- und eine Vorwärtsrichtung, mit denen Sie die gewünschte Ausrichtung festlegen können.

+0

Danke, das funktioniert perfekt! Ich hätte schwören können, dass ich die Quaternion-Funktion ausprobiert habe, aber wenn ich meine Notizen durchblättere, habe ich die falschen Parameter verwendet. – fallenpenguin