2017-02-07 3 views
1

Ich versuche, die Kamera um einen Würfel mit LookAt() -Funktion zu drehen und den Beschleunigungsmesser in einem Android-Gerät verwenden. Es läuft gut. Aber ich möchte, dass die Rotation bei einem Wert in der Y-Achse stoppt. Hier ist mein Code so weit:Einheit rotierende Kamera mit Beschleunigungsmesser

public Transform target; // The object to follow 
public float topMargin = 0.2f; // Top rotation margin 

// The position of the target 
private Vector3 point; 

void Start() { 
    point = target.transform.position; 
    transform.LookAt (point); 
} 

void Update() { 
    // Freeze 
    if (transform.rotation.y >= topMargin) { 
     transform.RotateAround (point, new Vector3 (0, 1, 0), 0); 
    } 
    // Freeze 
    else if (transform.rotation.y <= -topMargin) { 
     transform.RotateAround (point, new Vector3 (0, 1, 0), 0); 
    } else { 
     transform.RotateAround (point, new Vector3(0, 1, 0), Input.acceleration.x); 
    } 
} 

Das Problem ist, dass, wenn die Kamera den oberen Rand erreicht hat, ich nicht dreht wieder in die entgegengesetzte Richtung starten kann. Ich habe versucht, mit einer Flag-Variable, aber kann nicht die richtige Programmlogik (versuchte andere If/Else). Irgendwelche Vorschläge, wie man dies erreichen kann?

Antwort

0

Sie könnten nach der (beabsichtigten) Drehrichtung suchen. Wenn das Ergebnis zu einer Rotation führen würde, die geeigneter ist (weg von der Grenze und in Richtung des erlaubten Bereichs), könnte man zulassen, dass die beabsichtigte Rotation angewendet wird. Ich denke, die Verwendung des Beschleunigungsmessers zur Überprüfung der "beabsichtigten Richtung" wäre am einfachsten und am wenigsten fehleranfällig. (Anstatt die Rotation selbst zu überprüfen)

Verwandte Themen