Jump to content
Unity Insider Forum

   LookVector.x = -Input.GetAxis("Mouse Y");// minus dreht Mausbewegung von links/rechts auf oben/unten???


wueschn

Recommended Posts

Werte Profis

Ich benötige Hilfe bei folgendem funktionierenden Code:

public class CameraSwitch : MonoBehaviour
{
    public Camera camera1st;
    public Camera camera3rd;
    public float Look = 100.0f;
    private bool firstCameraOn = false;
    private Vector3 LookVector = Vector3.zero;

    void Update()
    {
        // Auf und ab schauen
       
        LookVector.x = -Input.GetAxis("Mouse Y");// minus dreht Mausbewegung von links/rechts auf oben/unten???
        camera1st.transform.Rotate(LookVector * Time.deltaTime * Look);
        camera3rd.transform.Rotate(LookVector * Time.deltaTime * Look);

        // 1st oder 3rd Kamera?
        if (Input.GetKey(KeyCode.Q))
        {
            if (firstCameraOn == true)
            {
                camera1st.enabled = true;
                camera3rd.enabled = false;
                firstCameraOn = false;
            }

            else
            {
                camera1st.enabled = false;
                camera3rd.enabled = true;
                firstCameraOn = true;
            }
        }

    }
}

Ich verstehe folgende Zeile nicht, die es ermöglicht, mit der Kamera nach oben und unten zu schwenken.... Es funktioniert, nur verstehen tu ich es nicht ...

   LookVector.x = -Input.GetAxis("Mouse Y");// minus dreht Mausbewegung von links/rechts auf oben/unten???

a) Warum geht es hier um die X-Achse, denn ich bewege ja den Blick auf und ab bzw. von oben nach untern..

b.) Warum braucht man hier ein Minus bei    LookVector.x = -Input.GetAxis("Mouse Y");

 

Danke vorab

wueschn

Link zu diesem Kommentar
Auf anderen Seiten teilen

Deine Frage unter a) beantwortet deine eigentliche Frage. Es ist nicht das Minus, das da Achsen zu tauschen scheint, sondern das Mappen von Y auf X.

Der Grund ist, dass wir auf der rechten Seite des Ausdrucks von einer Position reden - da ist Y die vertikale Achse. Links reden wir von Eulerwinkeln, also einer Rotation. Dort werden dieselben Achsen benutzt: X geht nach rechts, Y nach oben, Z in die Tiefe - aber bei Eulerwinkeln definiert man, wieviel um die jeweilige Achse gedreht wird. Drehst du um die X-Achse (man stelle sich einen Motorradlenker vor, mit dem man Gas gibt), dann bedeutet das, sich nach oben und unten zu neigen. Dreht man sich um die Y-Achse, dann schaut man sich nach links und rechts um.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mache dir einfach mal eine leere Szene, packe einen Würfel rein und spiele im Inspektor mit den Werten der Transform-Komponente herum, um ein Gefühl dafür zu bekommen, was da passiert.

Wenn du bei der Rotation den X-Wert langsam hochschiebst, dann neigt sich der Würfel nach unten. Derjenige, der das Script da oben geschrieben hat, hat die Input-Achse "Mouse Y" irgendwie eingerichtet - entweder so, dass die Werte der Achse positiv sind, wenn man mit der Maus nach oben geht, oder sie sind negativ. Vermutlich positiv... sollte die Standardeinstellung sein.

Gehen wir also mal davon aus: Man geht also mit der Maus nach oben und die Werte, die GetAxis zurückgibt, sind positiv. Steckt man diese positiven Werte in die Rotation, dann schaut man weiter nach unten, wenn man mit der Maus nach oben geht. Der ersteller des Scripts wollte das offenbar umgekehrt haben (ergibt bei First Person ja auch Sinn) und hat den Wert daher *-1 genommen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...