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

Rotation nach Mausgeschwindigkeit regeln

Recommended Posts

Guten Abend liebes Forum.

 

Aktuell hänge ich an der Entwicklung einer Kamera die zu meinem Spiel passen soll. Ich möchte, dass sich die Kamera dreht, wenn der Spieler die rechte Maustaste gedrückt hält. Soweit so gut, habe das auch hinbekommen. Nur gefällt mir das nicht ganz so, da die Rotation immer gleich schnell ist, egal wie schnell man die Maus dabei bewegt.

 

Weiß jemand wie ich die Rotationsgeschwindigkeit durch die Geschwindigkeit der Maus regulieren kann? Also wenn sich die Maus langsam bewegt, ist die Rotation auch sehr langsam und umgekehrt.

 

So sieht mein aktueller Code aus:

// C#
if (Input.GetMouseButton(1)) {
  if (Input.GetAxis("Mouse X") < 0) {
  transform.Rotate(Vector3.up, Space.World);
  } else if (Input.GetAxis("Mouse X") > 0) {
  transform.Rotate(-Vector3.up, Space.World);
  }
}

 

Würde mich über Vorschläge freuen. Schönen Tag! :)

Gruß, Kunga

Share this post


Link to post
Share on other sites

Du könntest statt Vector.up einfach den Input.GetAxis Wert benutzen und zusätzlich mit einem Wert für die Maussensitivität multiplizieren. Ist zwar dann nicht unbegrenzt langsam/schnell, da Input.GetAxis nur Werte zwischen -1 und 1 annehmen kann aber immerhin hast du schon mal eine differenzierte Rotationsgeschwindigkeit ^^

Hat für mich jedenfalls immer ausgereicht :)

 

@edit:

das ganze könnte dann übrigens abgekürzt so aussehen:

if(Input.GetMouseButton(1)){
transform.Rotate(-Input.GetAxis("Mouse X")); // der negative Input, weil ich gesehen hab, dass du das Vorzeichen invertierst
}

 

Das Abfragen des Vorzeichens ist da eigentlich irrelevant und == 0 muss auch nicht extra ausgeschlossen werden, da sich bei 0 ja auch nix rotiert ^^

  • Like 2

Share this post


Link to post
Share on other sites

Danke dir, das ist eine ganz gute Lösung, gefällt mir. :)

Du musst nur statt

transform.Rotate(Input.GetAxis("Mouse X));

transform.Rotate(new Vector3(0, Input.GetAxis("Mouse X"), 0), Space.World);

 

machen, sonst spuckt der dir eine Fehlermeldung aus wegen falschem Parameter. Aber danke dir, hab es hinbekommen und finde es gut so.

Bei dem Beispiel oben jetzt dreht sich die Kamera dann um die Y-Achse der Welt und nicht die der Kamera selbst.

 

Vielen danke nochmal! :)

Gruß, Kunga

  • Like 1

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  

×