Hermetes Geschrieben 24. Juli 2019 Melden Share Geschrieben 24. Juli 2019 Ich möchte die Richtung feststellen ob der Maus Click left,right,forward,back , von einem Object ausgehend, erfolgte. Gibt es dafür eine Methode oder muss man das mathematisch berechnen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 24. Juli 2019 Melden Share Geschrieben 24. Juli 2019 Mit Camera.WorldToScreenPoint kannst du die Position eines Objekts auf dem Bildschirm herausfinden. Die kannst du dann mit Input.mousePosition abgleichen. Dann braucht's ein bisschen Code, der checkt ob die X- oder die Y-Komponente der Differenz höher ist (also ob wir eher horizontal oder vertikal zum Objekt geklickt haben) und schaut, ob die höhere Komponente positiv oder negativ ist. public Transform target; private void Update() { if (Input.GetMouseButtonDown(0)) { PrintMouseDirection(); } } private void PrintMouseDirection() { var objectScreenPoint = Camera.main.WorldToScreenPoint(target.position); var distance = Input.mousePosition - objectScreenPoint; if (Mathf.Abs(distance.x) >= Mathf.Abs(distance.y)) { // horizontal if (ditance.x < 0) { Debug.Log("Left"); } else { Debug.Log("Right"); } } else { // vertical if (ditance.y < 0) { Debug.Log("Down"); } else { Debug.Log("Up"); } } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Hermetes Geschrieben 24. Juli 2019 Autor Melden Share Geschrieben 24. Juli 2019 Herzlichen Dank für das scripten Sascha! Habe es auch gleich ausprobiert. Und vergessen zu erwähnen, das es sich ja um ein selbst rotierendes Object handelt. Es ist ein NavMesh Agent. Jetzt müsste ich hier: Camera.main.WorldToScreenPoint(target.position) wohl noch sowas wie direction.forward (aus der Luft gegriffen) anbringen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 25. Juli 2019 Melden Share Geschrieben 25. Juli 2019 Ich verstehe ehrlich gesagt nicht wirklich, warum? Wir ermitteln hier nur die Richtung von Objektposition zu Mausposition. Was dann mit dieser Richtung passiert, und was für eine Art Objekt das ist, wäre erst der nächste Schritt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Hermetes Geschrieben 25. Juli 2019 Autor Melden Share Geschrieben 25. Juli 2019 Es geht um ein Pferd, das die Animation bekommen soll. Wenn z.B. die distance < 3 ist, dann soll es rückwärts laufen. Links- sowie Rechtsdrehung Animation für Mausposition left, right. Für die Drehung müsste ich eher an Rigidbody.velocitiy ran, oder? Für das rückwärtslaufen jedoch wäre das WorldToScreenPoint genau das richtige, denke ich. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 25. Juli 2019 Melden Share Geschrieben 25. Juli 2019 Kann es sein, dass du dann eigentlich eher den relativen Richtungsvektor der Figur haben möchtest? Also in Abhängigkeit davon, wie sie ausgerichtet ist? Also nicht "hier auf dem Bildschirm ist das Pferd, du hast rechts daneben geklickt", sondern "dein Klick war auf der rechten Seite des Pferdes"? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Hermetes Geschrieben 25. Juli 2019 Autor Melden Share Geschrieben 25. Juli 2019 Genau das! Und am besten die Information herausholen wann der Agent aufhört sich zu drehen, zwecks der Animation. Ich suche allgemein mehr Infos im Gebiet Rotation, kann das im Scripting API gar nicht so richtig finden. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 26. Juli 2019 Melden Share Geschrieben 26. Juli 2019 vor 11 Stunden schrieb Hermetes: Genau das! Dann wäre es besser, die Position des Mauszeigers in der Welt herauszufinden (statt umgekehrt die Position des Pferdes auf dem Bildschirm), üblicherweise über Raycast. vor 11 Stunden schrieb Hermetes: Und am besten die Information herausholen wann der Agent aufhört sich zu drehen, zwecks der Animation. Da wäre es sinnvoller, nicht den Winkel des Objekts anzuschauen und irgendwie abzuschätzen, wie lange sich das Ding wohl dreht, sondern stattdessen einfach in jedem Frame zu schauen, wie der Winkel zwischen transform.forward (also dem "Vorne") des Pferdes und dem Richtungsvektor von Pferd zu Ziel ist. vor 11 Stunden schrieb Hermetes: Ich suche allgemein mehr Infos im Gebiet Rotation, kann das im Scripting API gar nicht so richtig finden. Da gibt's auch gar nicht so viel. Eine Ausrichtung wird über ein Quaternion dargestellt. Die ganzen Rechnungen, die du dafür hast, stehen dir auf der Seite zu Verfügung. Hin und wieder kann es sinnvoll sein, von oder zu Euler-Winkeln zu konvertieren. Aber das war's dann auch wirklich schon. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.