Jump to content
Unity Insider Forum
Sign in to follow this  
wueschn

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

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Hallo Sascha

Danke für die Antwort, leider habe ich es trotzdem nicht verstanden, vor allem warum ein Minus davor ist  -Input.GetAxis("Mouse Y")

 

 

 

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×